网页源代码抓取工具(豆瓣电影排行榜基础教程:请求载体的身份标识(用啥发送的请求) )
优采云 发布时间: 2021-12-18 19:07网页源代码抓取工具(豆瓣电影排行榜基础教程:请求载体的身份标识(用啥发送的请求)
)
请求:
请求行 -> 请求方式(get/post) 请求url地址 协议
请求头 -> 放一些服务器要使用的附加信息
请求体 -> 一般放一些请求参数
回复:
状态行 -> 协议 状态码
响应头 -> 放一些客户端要使用的附加信息
响应体 -> 服务器返回的真正客户端要用的内容(HTML, json)等
需要额外注意请求头和响应头,它们一般隐藏了一些重要的内容
请求头中常用的一些重要内容:
1. User-Agent:请求载体的身份(请求由什么发送)
2. Referer: Anti-hotlinking(这个请求来自哪个页面?会用于反爬)
3. cookie:本地字符串数据信息(用户登录信息、反爬取令牌)
响应头中常用的一些重要内容:
1. cookie:本地字符串数据信息(用户登录信息、反爬取令牌)
2. 各种奇怪的字符串(根据经验判断,一般都是防止各种攻击和反爬的令牌)
请求方法:(在爬虫中不重要)
GET:显示提交
2. POST:隐式提交
开始使用请求:
安装:
pip install requests
案例一:获取搜狗搜索结果
import requests
url = 'https://www.sogou.com/web?query=周杰伦'
#所有地址栏里的请求方式一定为get
#需要修改User-Agent避免拦截
dic = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36'
}
resp = requests.get(url, headers=dic)
print(resp) #响应状态码
print(resp.text) #页面源代码
resp.close()
案例二:获取百度翻译结果
import requests
url = 'https://fanyi.baidu.com/sug'
s = input('请输入要翻译的英文单词:')
#post方式
dat = {
'kw':s
}
# 发送post请求,发送的数据必须放在字典中,通过data参数进行传递
resp = requests.post(url, data=dat)
#print(resp.text) #返回乱码
print(resp.json()) # 将服务器返回的内容直接处理成json() => dict
resp.close()
案例三:获取豆瓣分类电影排名
import requests
# 原url:?type=5&interval_id=100%3A90&action=&start=0&limit=20 太复杂,重新封装参数
url = 'https://movie.douban.com/j/chart/top_list'
# 重新封装参数
param = {
'type': '5',
'interval_id': '100:90',
'action': '',
'start': '0',
'limit': '20'
}
# User-Agent
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36'
}
resp = requests.get(url=url, params=param, headers=headers)
print(resp.json())
resp.close()