刚认识爬虫

1.认识爬虫

通用爬虫:

网络请求过程:

HTTP & HTTPS:

客户端发起一个HTTP请求会携带请求的参数和报头,请求报文是严格规范的。HTTP请求主要分为GET,POST两类。

经过三次握手四次挥手建立起稳定连接后,服务端返回完整的数据,包含状态行,响应正文等。常见的状态码有200,302,403,404,503等。

GET & POST :

GET请求 :

GET是从服务器上获取指定页面信息,GET请求参数都显示在URL上。"Get"请求的参数是URL的一部分。

POST请求 :

POST是向服务器提交数据并获取页面信息。POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,"POST"请求的参数不在URL中,而在请求体中。

常用请求报文:

  • Host:对应网址URL中的Web名称和端口号,用于指定被请求资源的Internet主机和端口号,通常属于URL的Host部分。

  • User-Agent:标识客户端身份的名称,通常页面会根据不同的User-Agent信息自动做出适配,甚至返回不同的响应内容。

  • Referer:表明产生请求的页面来自于哪个URL,用户是从该Referer页面访问到当前请求的页面。这个属性可以用来跟踪Web请求来自哪个页面,是从什么网站来的等。

  • Cookie:浏览器用这个属性向服务器发送Cookie。Cookie是在浏览器中寄存的小型数据体,它可以记载和服务器相关的用户信息,也可以用来实现模拟登录。

2.库与开发工具:

python 复制代码
pip  install  requests
2.1 基本爬虫的过程:

1.准备起始URL (准备UA伪装)------>URL

2.起始的URL发送请求(一般分为get请求和post请求)------>requests

3.获取响应(返回HTML类型数据以文本形式处理)------>响应体

4.数据提取(常见的有re,xpath,bs4)------>数据提取方式

requests请求:
GET请求传参方式:
    1. url 直接传参

      python 复制代码
      get_url="https://httpbin.org/get?id=123"
    1. 通过 params 参数传参

      python 复制代码
      params={"gender":"nan","name":"dongli"}
      response=requests.get(url=get_url,params=params)
POST请求传参方式:

通过data进行表单提交

python 复制代码
post_url="https://httpbin.org/post"
data={"user":"dongli","password":"123"}
response=requests.post(url=post---_url,data=data)

requests响应 :

python 复制代码
response.encoding='utf-8'

print(response.text) #响应内容的字符串形式
print(type(response.text)) #str
print(response.content) #响应内容的二进制形式
print(type(response.content)) #bytes
print(response.status_code) #状态码
print(response.request) #requests对象   请求对象
print(response.request.headers) #请求头
print(response.request.url) #请求地址  也就是上面的
print(response.url) #响应地址  获取重定向之后的地/址
cookies=response.cookies  #获取响应之后的cookies
print(requests.utils.dict_from_cookiejar(cookies))
小案例:

伪装UA发起请求:

python 复制代码
# 导入爬虫库
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/116.0.0.0 Safari/537.36",
}
response = requests.get("https://httpbin.org/get", headers=headers)
print(response)

# 获取响应体内容
text = response.text
print(text)

带参数的post请求:

python 复制代码
import requests

url = "https://www.baidu.com"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/116.0.0.0 Safari/537.36",
}

data = {
    "user": "zhangsan",
    "password": "qwe123"
}
response = requests.post(url, headers=headers, data=data)
print(response.text)
print(response.encoding)
print(response.content)
print(response.status_code)
print(response.request)
print(response.request.headers)
print(response.url)
print(response.cookies)

print(requests.utils.dict_from_cookiejar(response.cookies))

带参数的get请求:

python 复制代码
import requests

# get请求在url传递参数
# url = "https://httpbin.org/get?a=1&b=2"
url = "https://httpbin.org/get"
params = {
    "a": 1,
    "b": 2
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
                  "Chrome/116.0.0.0 Safari/537.36",
}


# response = requests.get(url, headers=headers)
response = requests.get(url, headers=headers, params=params)
print(response.text)

get请求基本使用:

python 复制代码
import requests

response = requests.get("https://httpbin.org/get") #获取HTML网页的主要方法,对应于HTTP的GET。
print(response)

text = response.text #http响应内容的 字符串(str) 形式,请求url对应的页面内容
print(text)

port requests

response = requests.get("https://httpbin.org/get") #获取HTML网页的主要方法,对应于HTTP的GET。

print(response)

text = response.text #http响应内容的 字符串(str) 形式,请求url对应的页面内容

print(text)

复制代码
相关推荐
搂着猫睡的小鱼鱼38 分钟前
Ozon 商品页数据解析与提取 API
爬虫·php
深蓝电商API2 小时前
住宅代理与数据中心代理在爬虫中的选择
爬虫·python
csdn_aspnet3 小时前
Libvio.link爬虫技术深度解析:反爬机制破解与高效数据抓取
爬虫·反爬·libvio
0思必得05 小时前
[Web自动化] Selenium处理滚动条
前端·爬虫·python·selenium·自动化
vx_biyesheji00017 小时前
豆瓣电影推荐系统 | Python Django 协同过滤 Echarts可视化 深度学习 大数据 毕业设计源码
大数据·爬虫·python·深度学习·django·毕业设计·echarts
深蓝电商API7 小时前
爬虫IP封禁后的自动切换与检测机制
爬虫·python
喵手9 小时前
Python爬虫实战:公共自行车站点智能采集系统 - 从零构建生产级爬虫的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·采集公共自行车站点·公共自行车站点智能采集系统·采集公共自行车站点导出csv
喵手9 小时前
Python爬虫实战:地图 POI + 行政区反查实战 - 商圈热力数据准备完整方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·地区poi·行政区反查·商圈热力数据采集
芷栀夏9 小时前
从 CANN 开源项目看现代爬虫架构的演进:轻量、智能与统一
人工智能·爬虫·架构·开源·cann
喵手1 天前
Python爬虫实战:HTTP缓存系统深度实战 — ETag、Last-Modified与requests-cache完全指南(附SQLite持久化存储)!
爬虫·python·爬虫实战·http缓存·etag·零基础python爬虫教学·requests-cache