python爬虫之requests模块
引入
什么是requests模块
requests模块是python中原生的基于网络请求的模块,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。
为什么使用requess模块
因为在使用urllib模块的时候,会有诸多不便之处,总结如下:
- 手动处理url编码
- 手动处理post请求参数
- 处理cookie和代理操作繁琐
使用requests模块:
- 自动处理url编码
- 自动处理post请求参数
- 简化cookie和代理操作
安装requests模块
pip install requests
需求:爬取搜狗指定词条搜索后的页面数据
###需求 爬取搜狗中指定词条搜搜后的页面数据
import requests
url ='https://www.sogou.com/'
word = input('enter a word')
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0'
}
params = {
'query':word,
'ie':'utf-8'
}
souguo_list=requests.get(url=url,headers=headers,params=params).text
print(souguo_list)
with open('./souguo.html','w',encoding='utf-8') as fp:
fp.write(souguo_list)
print('over')
请求载体身份标识的伪装:
User-Agent:请求载体身份标识,通过浏览器发起的请求,请求载体为浏览器,则该请求的User-Agent为浏览器的身份标识,使用爬虫程序发起的请求,则该请求的载体为爬虫程序
反爬机制:某些网站会对访问该网站的请求中的User-Agent来进行捕获和判断,如果该请求的UA为爬虫程序,则拒绝向该请求提供数据
反反爬策略:将爬虫程序的UA伪装成某一款浏览器的身份标识
需求:爬取豆瓣电影分类排行榜https://movie.douban.com/中的电影详情数据
import requests
import urllib.request
if __name__ == "__main__":
#指定ajax-get请求的url(通过抓包进行获取)
url = 'https://movie.douban.com/j/chart/top_list?'
#定制请求头信息,相关的头信息必须封装在字典结构中
headers = {
#定制请求头中的User-Agent参数,当然也可以定制请求头中其他的参数
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36',
}
#定制get请求携带的参数(从抓包工具中获取)
param = {
'type':'5',
'interval_id':'100:90',
'action':'',
'start':'0',
'limit':'20'
}
#发起get请求,获取响应对象
response = requests.get(url=url,headers=headers,params=param)
#获取响应内容:响应内容为json串
print(response.text)