数据请求:request
数据请求
爬虫的数据请求通常是应用于抓取页面源代码,请求方式可以通过python内置模块urllib模块来获得页面源代码,但是这种方式并不常用。
request模块是一种第三方模块,通常采用这个模块来抓取页面源代码,该模块比urllib要简单,且处理各种请求方式也比较方便
模块安装
pip install requests
请求方法
请求方式分为get请求和post请求,简单区分get请求的所有参数信息都放在url内,post请求则不会。
get请求
resp = requests.get(url, params=hehe, headers=headers)
params: url参数信息。该信息见于Payload中的Query String Parameters中。
headers: 请求头信息。需要附加的请求头信息通常有User-Agent(访问来源,检测是否是正常的浏览器请求)
有时网页源代码中可能没有我们想要的信息,这种情况通常是因为页面源代码包含页面的骨架结构,真实的数据视是通过第二次以后的请求获得的。
为了获得这种数据,我们可以通过F12打开开发者工具,选择network -> XHR 查看数据,F5刷新页面即可看到请求到的数据,找到正确的请求信息后查看headers即获得url。如果url后面跟随很多参数信息,可以查看Query String Parameters,里面是字典化的参数信息
get请求实例
import requests
url = "https://movie.douban.com/j/chart/top_list"
params = {
"type": "13",
"interval_id": "100:90",
"action": "",
"start": "0",
"limit": "20"
}
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
resp = requests.get(url, params=params, headers=headers) # 处理一个小小的反爬
# print(resp.text)
print(resp.json())
print(resp.request.url)
post请求
resp = requests.post(url, data=data, headers=headers)
data: 同get方法中的params参数。因为post请求的参数不在url内,所以附加参数的时候可以使用该参数。该信息见于Payload中的Form Data中。
post请求实例
import requests
url = "https://fanyi.baidu.com/sug"
hehe = {
"kw": input("请输入一个单词")
}
resp = requests.post(url, data=hehe)
print(resp.text) # 拿到的是文本字符串
print(resp.json()) # 此时拿到的直接是json数据