网络爬虫之requests模块
今日概要
基于requests的get请求
基于requests模块的post请求
基于requests模块ajax的get请求
基于requests模块ajax的post请求
综合项目练习:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据
知识点回顾
常见的请求头
常见的相应头
https协议的加密方式
基于如下5点展开requests模块的学习
什么是requests模块
requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
为什么要使用requests模块
因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
手动处理url编码
手动处理post请求参数
处理cookie和代理操作繁琐
使用requests模块:
自动处理url编码
自动处理post请求参数
简化cookie和代理操作
如何使用requests模块
安装: pip install requests
requests作用:
就是一个基于网络请求的模块,可以用来模拟浏览器发请求。
使用流程
指定一个字符串形式的url
发起请求(基于requests模块发起请求 )
获取响应对象中的数据值
持久化存储
通过基于requests模块的爬虫项目对该模块进行学习和巩固
基于requests模块的get请求
需求:爬取搜狗首页的页面源代码
import requests
#1以字符串的形式指定url
url = 'https://www.sogou.com/'
#2发送请求
response = requests.get(url=url)#get返回一个响应对象
#3获取响应数据,响应数据在响应对象中
page_text = response.text#获取字符串形式的响应数据
print(page_text)
#4持久化存储
with open('./sogou.html','w',encoding='utf-8') as fp:
fp.write(page_text)#将字符串写入到文件中
需求:实现一个简易的网页采集器,即可以在搜狗中录入任何一个关键字,点击搜索,就能得到响应的页面,(爬取到任意关键字对应的页面源码数据)
如下操作:
搜索:Jay,获取其中的一部分url也能访问,
https://www.sogou.com/web?query=jay
#1.以字符串的形式指定url
url = 'https://www.sogou.com/web?query=jay'
#2.发送请求
response = requests.get(url=url)#返回一个响应对象
#3获取响应数据
page_taxt = response.text#获取字符串形式的响应数据
#4持久化存储
with open('./jay.html','w',encoding='utf-8') as fp:
fp.write(page_text)
当运行时出现以下结果
问题总结:
出现了乱码问题
爬取的数据量级有问题
解决乱码问题:
#1.以字符串的形式指定url
url = 'https://www.sogou.com/web?query=jay'
#2.发送请求
response = requests.get(url=url)#返回一个响应对象
#response.encoding #可以返回原始数据的编码格式
response.encoding = 'utf-8' #将编码改成utf-8的形式
#3获取响应数据
page_text = response.text#获取字符串形式的响应数据
<