03 requests模块基础

1. requests 模块简介

什么是requests 模块

  requests模块是python中原生的基于网络请求的模块,功能强大,用法简洁高效。在爬虫领域中占据着半壁江山的地位。requests模块作用:模拟浏览器发请求。

为什么要使用requests 模块

 因为在使用urllib模块的时候,会有诸多不便之处,总结如下:

  • 手动处理url编码
  • 手动处理post请求参数
  • 处理cookie和代理操作繁琐
  • ......

而使用requests模块的优势:

  • 自动处理url编码
  • 自动处理post请求参数
  • 简化cookie和代理操作
  • ......

如何使用requests模块

 安装: pip install requests

 使用流程

  • 指定url
  • 基于requests模块发起请求
  • 获取响应对象中的数据值
  • 持久化存储

requests 模块的各种请求方式

   

最常用的请求方式就是 post 和 get 请求。params 在 get 请求中使用,data、json在post请求中使用。

1 response = requests.get(url, params={‘key‘:‘value‘})
2 response = requests.post(url, data={‘key‘:‘value‘})
1  #返回的是Unicode型的数据;取html源码;
2  response.text
3
4 # 返回的是bytes型也就是二进制的数据。取图片,文件;
5  resppnse.content
6
7 # 返回的是json格式数据
8  resppnse.json()  

User-Agent  *****

  通过自定义请求对象,用于伪装爬虫程序请求的身份。

  User-Agent参数,简称为UA,该参数的作用是用于表明本次请求载体的身份标识。如果我们通过浏览器发起的请求,则该请求的载体为当前浏览器,则UA参数的值表明的是当前浏览器的身份标识表示的一串数据。如果我们使用爬虫程序发起的一个请求,则该请求的载体为爬虫程序,那么该请求的UA为爬虫程序的身份标识表示的一串数据。有些网站会通过辨别请求的UA来判别该请求的载体是否为爬虫程序如果为爬虫程序,则不会给该请求返回响应,那么我们的爬虫程序则也无法通过请求爬取到该网站中的数据值,这也是反爬虫的一种初级技术手段。为了防止该问题的出现,则我们可以给爬虫程序的UA进行伪装,伪装成某款浏览器的身份标识。

1 import requests
2 url = ‘http://www.baidu.com/‘
3 headers={
4         ‘User-Agent‘ : ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36‘
5     }
6 request =request.get(url=url,headers=headers)

2. requests 模块使用实例

2.1 基于requests模块的get请求

示例:爬取搜狗指定词条搜索后的页面数据 (网页采集器, 动态获取)

 1 import requests
 2 word = input(‘please enter a word:‘)
 3 url = ‘https://www.sogou.com/web‘
 4
 5 headers = {
 6     ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36‘
 7 }
 8
 9 param = {
10     ‘query‘:word
11 }
12
13 response = requests.get(url=url,params=param)
14 page_text = response.text
15
16 fileName = word+‘.html‘
17 with open(fileName,‘w‘,encoding=‘utf-8‘) as fp:
18     fp.write(page_text)
19
20 print(fileName,‘爬取成功!‘)

2. 2 基于requests模块的post请求

示例:登录豆瓣电影,爬取登录成功后的页面数据

 1 import requests
 2 import os
 3
 4 url = ‘https://accounts.douban.com/login‘
 5
 6 # 请求携带参数
 7 data = {
 8     "source": "movie",
 9     "redir": "https://movie.douban.com/",
10     "form_email": "131xxxxxxxxx",
11     "form_password": "88888888",
12     "login": "登录",
13 }
14
15 #自定义请求头信息
16 headers={
17     ‘User-Agent‘: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36‘,
18 }
19 page_text = requests.post(url=url,data=data).text
20 with open(‘./douban111.html‘,‘w‘,encoding=‘utf-8‘) as fp:
21     fp.write(page_text)

2.3 基于requests模块ajax的get请求 

示例:爬取豆瓣电影分类排行榜中的电影详情数据

 1 import requests
 2
 3 headers = {
 4     ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36‘
 5 }
 6
 7 url = ‘https://movie.douban.com/j/chart/top_list?type=5&interval_id=100%3A90&action=&start=0&limit=20‘
 8
 9 movie_list = requests.get(url=url,headers=headers).json()
10
11 all_names = []
12 for dic in movie_list:
13     name = dic[‘title‘]
14     all_names.append(name)   

2.4 基于requests模块ajax的post请求

示例:破解百度翻译(post请求)

 1 import requests
 2
 3 url = ‘https://fanyi.baidu.com/sug‘
 4 wd = input(‘enter something of English:‘)
 5 data = {
 6     ‘kw‘:wd
 7 }
 8
 9 headers = {
10     ‘User-Agent‘:‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36‘
11 }
12
13 #发起一个post请求
14 res =requests.post(url=url,data=data,headers=headers).json()                        

综合练习:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据

 1 import requests
 2
 3 headers = {
 4         ‘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‘,
 5
 6 url = ‘http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsList‘
 7
 8
 9 for page in range(1,5):
10     data = {
11         ‘on‘: ‘true‘,
12         ‘page‘: str(page),
13         ‘pageSize‘: ‘15‘,
14         ‘productName‘:‘‘,
15         ‘conditionType‘: ‘1‘,
16         ‘applyname‘:‘‘,
17         ‘applysn‘:‘‘
18     }
19
20     json_text = requests.post(url=url,data=data,headers=headers).json()
21     all_id_list = []
22     for dict in json_text[‘list‘]:
23         id = dict[‘ID‘]                            #用于二级页面数据获取
24         all_id_list.append(id)
25
26 #该url是一个ajax的post请求
27 post_url = ‘http://125.35.6.84:81/xk/itownet/portalAction.do?method=getXkzsById‘
28 for id in all_id_list:
29     post_data = {
30         ‘id‘: id
31     }
32    response = requests.post(url=post_url, data=post_data, headers=headers)
33
34     if response.headers[‘Content-Type‘] == ‘application/json;charset=UTF-8‘:
35         # print(response.json())
36         # 进行json解析
37         json_text = response.json()
38         print(json_text[‘businessPerson‘])

查看是不是动态加载页面,就在开发者工具中的response中搜索。不能搜到就证明是动态加载出来的。

原文地址:https://www.cnblogs.com/Summer-skr--blog/p/11396904.html

时间: 2024-10-02 06:00:45

03 requests模块基础的相关文章

03.requests模块(1)

目录 03.requests模块(1) 展开requests模块的学习 代码实例 需求:爬取搜狗指定词条搜索后的页面数据 需求:登录豆瓣电影,爬取登录成功后的页面数据 需求:爬取豆瓣电影分类排行榜 https://movie.douban.com/中的电影详情数据 需求:爬取肯德基餐厅查询http://www.kfc.com.cn/kfccda/index.aspx中指定地点的餐厅数据 需求:爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据 03.requests模块(1)

05爬虫-requests模块基础(2)

今日重点: 1.代理服务器的设置 2.模拟登陆过验证码(静态验证码) 3.cookie与session 4.线程池 1.代理服务器的设置 有时候使用同一个IP去爬取同一个网站,久了之后会被该网站服务器屏蔽.那么我们应该1怎么处理这个问题呢? 解决思路: 如果我们爬取网站,对方服务器显示的是别人的IP地址,那么即使对方服务器把IP禁掉,屏蔽.也无关紧要,我们可以继续换其他的IP地址继续爬取. 因此使用代理服务器,就可以解决问题. 网上有很多代理服务器的网站一般情况花钱比较安全,当然,你要识别这个I

requests模块之基础语法

基础语法 发送请求 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块:  >>> import requests  然后,尝试获取某个网页.本例子中,我们来获取 Github 的公共时间线:  >>> r = requests.get('https://api.github.com/events')  现在,我们有一个名为 r 的 Response 对象.我们可以从这个对象中获取所有我们想要的信息. Requests 简便的 API

Python高手之路【八】python基础之requests模块

1.Requests模块说明 Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 HTTP 功能,但是它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 在Python的世界里,事情不应该这么麻烦. Requests 使用的是 urllib3,因此继承了它的所有特性.Request

爬虫基础之requests模块

1. 爬虫简介 1.1 概述 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 1.2 爬虫的价值 在互联网的世界里最有价值的便是数据, 谁掌握了某个行业的行业内的第一手数据, 谁就是该行业的主宰. 掌握了爬虫技能, 你就成了所有互联网信息公司幕后的老板, 换言之,它们都在免费为你提供有价值的数据. 1.3 robots.txt协议 如果自己的门户网站中的指定页面中的数据不想让爬虫程序爬取到的话,那么

python之requests模块

Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 发送GET请求 import urllib.request f = urllib.request.urlopen('http://www.webxml.com.cn//webservices/qqOnlineWebService.asmx/qqCheckOnline?qqCode=424662508')

requests模块--python发送http请求

requests模块 在Python内置模块(urllib.urllib2.httplib)的基础上进行了高度的封装,从而使得Pythoner更好的进行http请求,使用Requests可以轻而易举的完成浏览器可有的任何操作.Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库. requests使用 一.GET请求 向 https://github.com/timeline.json 发送一个GET请求,将请求和响应相关均封装在 ret 对象

Learn_Day12 模块2:模块1内容补充、requests模块、xml模块

模块1内容补充: vars()    python自动设置的全局变量 在py文件开头用三引号注释,表示是对py文件本身的注释 __doc__    py文件本身的文件注释 __file__    文件路径 __package__    导入py文件(自定义模块)的位置(文件夹,目录),用"."分割 __cached__    缓存,python2版本无此属性 __name__    默认 __main__:主文件执行主函数前用作判断 json.loads(形似对象)    用于将形似列

python网络编程----requests模块

python访问网站可以用标准模块--urllib模块(这里省略),和requests(安装-pip install requests)模块,requests模块是在urllib的基础上进行的封装,比urllib模块功能更强到,易用 import json,requests #发送get请求 url = 'http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑马' req = requests.get(url) #发送get请求 print(req.t