requests是基于urllib3的一个用于发起http请求的库(中文文档
数据采集流程: 
  1. 指定url>>
  2. 基于
  3. requests模块发起请求>>
  4. 获取响应中的数据>>
  5. 数据解析>>
  6. 进行持久化存储

 

1.模块安装
pip install requests

2.requests之request请求  

爬虫之requests的请求与响应

  2.1请求方式

  常用的就是requests.get()和requests.post()
1 #各种请求方式:常用的就是requests.get()和requests.post()
2 import requests
3 requests.get('https://api.github.com/events')
4 requests.post('http://httpbin.org/post', data = {'key':'value'})
5 requests.put('http://httpbin.org/put', data = {'key':'value'})
6 requests.delete('http://httpbin.org/delete')
7 requests.head('http://httpbin.org/get')
8 requests.options('http://httpbin.org/get')

  2.2请求url

  在数据采集之前,要通过页面的加载方式(静态加载还是动态加载)确定需要获取资源的url(可以参考爬虫简介实例)

  2.3请求头

  如果你想为请求添加 HTTP 头部,只要简单地传递一个 dict 给 headers 参数就可以了。

  有些网站为了拒绝通过程序代码的请求,会在接收请求时会对发起请求的载体进行校验,请求头中的‘User-Agent’参数就是请求载体的唯一标识,因此一般需要定制请求头加入载体标识,这也是其中一种反反爬策略:UA伪造。

  方式一:唯一指定请求载体身份

1 import requests
2 headers={
3     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
4 }
5 response=requests.get('http://www.baidu.com',headers=headers)
6 print(response.encoding)#百度编码格式为ISO-8859-1
7 response.encoding='utf-8'
8 print(response.text)
唯一指定请求载体
  方式二:通过fake-useragent随机生成
 1 import requests
 2 
 3 from fake_useragent import UserAgent#pip install fake-useragent模块
 4 UA=UserAgent()#实例化创建请求载体对象
 5 headers={
 6     'User-Agent':UA.random#随机获取一个请求载体
 7 }
 8 # print(headers)
 9 
10 response=requests.get('http://www.baidu.com',headers=headers)
11 print(response.encoding)#百度编码格式为ISO-8859-1
12 response.encoding='utf-8'
13 print(response.text)
fake-useragent随机生成请求载体

  2.3请求参数

    2.3.1 get请求参数----params

  get请求通过URL的查询字符串(querystring)传递某种数据。如果你是手工构建URL,那么数据会以键值对的形式置于URL中,跟在一个问号的后面。例如, https://movie.douban.com/typerank?type_name=%E5%8A%A8%E4%BD%9C&type=5&interval_id=100:90&action=&qq-pf-to=pcqq.c2c(豆瓣动作片评分)。 Requests允许你使用params关键字参数,以一个字符串字典来提供这些参数。

 1 import requests
 2 from fake_useragent import UserAgent
 3 UA=UserAgent()
 4 headers={'User-Agent':UA.random}
 5 
 6 START=0
 7 END=2000#如果循环爬取,起始位置数据计数会有大量重复,因此设置起始值爬取
 8 f=open('豆瓣动作片评分.txt','w',encoding='utf-8')
 9 
10 url=f'https://movie.douban.com/j/chart/top_list'
11 params={
12     'type':'5',
13     'interval_id':'100:90',
14     'action':'',
15     'start':START,
16     'limit':END,
17 }
18 response = requests.get(url=url, params=params, headers=headers)
19 data=response.json()
20 
21 for movie in data:
22     f.write(f'{movie["rank"]}\t{movie["title"]}\t{movie["score"]}\n')
23 
24 f.close()
get请求参数params

相关文章:

  • 2021-09-19
  • 2022-12-23
  • 2022-01-03
  • 2022-12-23
  • 2022-12-23
  • 2021-09-10
  • 2021-11-17
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-11-10
  • 2021-10-14
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-06
相关资源
相似解决方案