目录
2、爬取整个页面的数据--带请求参数params和请求头headers的get请求
3、爬取页面局部数据(Ajax请求返回json数据)--带参数的post请求
4、爬取页面局部数据(鼠标滚动,获取页面动态加载的json数据)--带参数的post请求
5、爬取页面局部数据(按照查询的关键字,获取页面动态加载的文本数据)--带参数的post请求
6、通过页面动态加载,获取公司id,再通过id获取公司详情信息--post请求
request模块
- python中原生的一款基于网络请求的模块,功能强大,简单便捷,效率很高;
- 模拟浏览器发请求;
- 同类的比较老的模块是urllib模块;
- 安装:pip install --user requests
request模块的编码流程
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储
解决response返回中文乱码问题
- response.encoding = 'utf-8',指定响应报文的编码格式(中文乱码情况);response默认使用iso-8859-1编码对消息体进行编码,传送数据给客户端。
- 已经爬好的带有\u5430的字符串怎么转为正常的中文显示字符串?
- python3: 字符串.encode(‘utf-8’).decode(‘unicode_escape’)
request实战
1、爬取整个页面的数据--不带参数的get请求
需求:爬取搜狗首页的页面数据
获取不带参数的get请求的响应报文
# 1、需求:爬取搜狗首页的页面数据
# 获取不带参数的get请求的响应报文
import requests
def getHtmlPageText():
# 指定url
url = 'https://www.sogou.com/'
# 发起请求
response = requests.get(url)
# 获取字符串类型的响应数据(参考接口返回的Content-Type类型)
page_text = response.text
# 持久化存储
with open('./sougou.html', 'w', encoding='UTF-8') as file:
file.write(page_text)
print('爬虫结束')
if __name__ == '__main__':
getHtmlPageText()
输出结果:当前脚本目录保存sougou.html

2、爬取整个页面的数据--带请求参数params和请求头headers的get请求
需求:爬取搜狗指定词条对应的搜索结果页面(简易网页采集器)
带请求参数params和请求头headers的get请求
- 封装请求参数params和请求头headers的字典;
- params,请求带有参数;
- headers,请求访问时,要UA伪装,伪装是浏览器发起的请求,就要设置User-Agent(请求载体的身份标识);
- UA检测,指门户网站的服务器会检测,对应请求的载体身份标识,如果检测到请求的载体身份标识为某一款浏览器,说明该请求是一个正常的请求;如果检测到请求的载体身份标识不是基于某一款浏览器的,则表示该请求为不正常的请求(即爬虫),服务器端就可能拒绝该次请求;
- UA伪装,让爬虫对应的请求载体身份标识伪装成某一款浏览器;
- response.encoding = 'utf-8',指定响应报文的编码格式(中文乱码情况);response默认使用iso-8859-1编码对消息体进行编码,传送数据给客户端。
- 已经爬好的带有\u5430的字符串怎么转为正常的中文显示字符串?
- python3: 字符串.encode(‘utf-8’).decode(‘unicode_escape’)
# 2、需求:爬取搜狗指定词条对应的搜索结果页面(简易网页采集器)
# 获取带有请求参数params和headers的get请求的响应报文
import requests
def getSearchResultPage(searchKeyword):
url = 'https://www.sogou.com/web'
# 直接访问搜索结果页面,处理url携带的参数,封装到字典中
param = {
'query': searchKeyword
}
# UA伪装,将对应的User-Agent封装到一个字典中
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'
}
# 对指定的url发起的请求,对应url是携带参数的,并且请求过程中处理了参数
response = requests.get(url, params=param, headers=header)
# response默认使用iso-8859-1编码对消息体进行编码,传送数据给客户端。
# 指定响应报文的编码格式
response.encoding = 'utf-8'
page_text = response.text
fileName = searchKeyword + '.html'
with open(fileName, 'w', encoding='utf-8') as file:
file.write(page_text)
print('爬虫结束')
if __name__ == '__main__':
getSearchResultPage("python")
getSearchResultPage("测试")
输出结果:


本文详细介绍了Python的request模块,包括模块的编码流程、解决响应中文乱码问题以及多个实战示例,如不同类型的GET、POST请求,处理Ajax返回的JSON数据,动态加载数据的抓取等。
最低0.47元/天 解锁文章
5169





