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)
posted @ 2019-03-02 19:56  茉莉花M  阅读(328)  评论(0编辑  收藏  举报