hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

requests用法基本-进阶

2019-11-18杂谈搜奇网34°c
A+ A-

本节内容

  1. 模块的装置

    -----------------------基础用法---------------------

  2. GET用法、POST用法

    -----------------------进阶用法--------------------

  3. cookie处置惩罚、代办ip、session

一 模块装置:

1). 装置requests包照样很轻易的,电脑中有python环境,翻开cmd,输入pip install requests下载;

假如有同砚运用pycharm的话,挑选file-->setting-->Project interpreter-->右侧"+"号点击--->输入模块名---->选中下载。

2). requests的作用、特性、以及运用流程

  • 作用:模仿用户运用浏览器上网

  • 特性:简朴、高效

  • 运用流程:

    1. 指定url;

    2. 提议要求(requests.get/post);

    3. 猎取相应信息/数据(response);

    4. 耐久化存储(保留csv、MySQL、txt等);

 

二基础用法:

1). get(url,headers,params):各用法

猎取搜狗首页的页面数据:

 1 import requests #引包
 2 #1指定url
 3 url = 'https://www.sogou.com/'
 4 #2.提议要求
 5 response = requests.get(url=url)
 6 #3猎取相应数据
 7 page_text = response.text #text返回的是字符串范例的数据
 8 #耐久化存储
 9 with open('./sogou.html','w',encoding='utf-8') as fp:
10     fp.write(page_text)
11 print('over!')
12 #也能够直接打印
13 print(page_text)   #这就是服务器给我们返回的数据信息(response)

 

2). headers的运用:

假如没有假装UA,你发送的要求中的UA是一个爬虫标识;而且如今大部分网站都是有UA检测(反爬机制),所以我们须要UA假装(反反爬战略)骗过网站,

  • 我们能够翻开网站,F12,随便点击一个信息,找到Headers这个标签,翻到最下面有一个 User-Agent ,在python中我们须要对他举行组织。

  • python中有一个随机生成UserAgent的包----fake-useragent,它的装置要领也很简朴,pip install fake-useragent。

3). 下面完成上面headers的组织:

1 #第一种要领
2 #user-agent放在字典中,不光useragent,背面我们讲到的cookie等都须要放入
3 import requests
4 headers== {
5     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
6 }
7 #挪用要领,get(传入了两个参数,url,headers)
8 response = requests.get("http://www.baidu.com",headers=headers)

运用fake-useragent猎取并组织UA:

import requests
from fake_useragent import UserAgent
ua = UserAgent()
headers = {'User-Agent': ua.random}
url = '待爬网页的url'
resp = requests.get(url, headers=headers)

 

4). params 参数

我们运用一个例子来融会headers与params,照样以搜狗为例:

 1 import requests
 2 wd = input('enter a word:')
 3 url = 'https://www.sogou.com/web'
 4 #参数的封装
 5 param = {
 6     'query':wd
 7 }
 8 #UA假装
 9 headers = {
10     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
11 }
12 response = requests.get(url=url,params=param,headers=headers)
13 #手动修正相应数据的编码
14 response.encoding = 'utf-8'
15 page_text = response.text
16 fileName = wd + '.html'
17 with open(fileName,'w',encoding='utf-8') as fp:
18     fp.write(page_text)
19 print(fileName,'爬取胜利!!!')

上面的例子能够看出,假如须要将参数放在url中通报,能够应用 params 参数 。

5)post用法:我们接见网站的时刻,有时刻是须要提交数据给网页的,假如提交的数据中没有网站所认证的信息,那末网站将会返回给你毛病或许其他信息。

最基础的POST要求:

1 response = requests.post("http://www.baidu.com/",data=data)

传入数据的今后就不须要运用urlencode举行编码了。

实例(完成百度翻译):

 1 import requests
 2 #破解百度翻译
 3 url = 'https://fanyi.baidu.com/sug'
 4 word = input('enter a English word:')
 5 #要求参数的封装
 6 data = {
 7     'kw':word
 8 }
 9 #UA假装
10 headers = {
11     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
12 }
13 response = requests.post(url=url,data=data,headers=headers)
14 #text:字符串  json():对象
15 json_dict = response.json()
16 17 print(json_dict)#返回是一个json列表,举行数据提取即可

 

如今大部分的网站都是经由过程动态加载(Ajax)该手艺加载信息,有的网站防备数据的泄漏或许用户隐私平安,会设置js、css字体加密等等;背面有机会在引见。再举个例子以下,爬取肯德基餐厅位置:

 1 #爬取恣意都市对应的肯德基餐厅的位置信息
 2 #动态加载的数据
 3 city = input('enter a cityName:')
 4 url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
 5 #数据封装
 6 data = {
 7     "cname": "",
 8     "pid": "",
 9     "keyword": city,
10     "pageIndex": "2",
11     "pageSize": "10",
12 }
13 #UA假装
14 headers = {
15     'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36'
16 }
17 #返回的数据
18 response = requests.post(url=url,headers=headers,data=data).text
19 print(response)#打印

有人会问怎么看我们须要传输什么参数呢?我们翻开网站币乎网站,点击登录,翻开开辟者形式(谷歌浏览器),输入账号暗码后,在标签为Network中的Headers中最下面的Request payload中。如图所示:

我们能够运用模仿参数举行登录(大部分网站举行加密);在背面会解说谷歌的一些操纵以及加密的数据的处理体式格局,这里临时略过。

三 cookie、代办ip、session

(1). cookie的引见:

进修之前简朴的相识一下cookie是做什么的,有什么作用;我们在百度上搜刮一下,会出来许多的关于cookie的引见,我截取了一段:

Cookie的作用:

cookie的用处是存储用户在特定网站上的暗码和 ID。别的,也用于存储起始页的首选项。在供应个人化检察的网站上,将应用计算机硬驱上的少许空间来贮存这些首选项。如许,每次登录该网站时,浏览器将搜检是不是有cookie。假如有,浏览器将此 cookie 随网页的要求一同发送给服务器 ,有一个基础的观点就行;

接下来我们猎取一下cookies:

 1 import requests
 2 #网址
 3 url ="http:///www.baidu。com”
 4 #返回相应
 5 response = requests.get(url)
 6 #猎取要求网页的cookies
 7 #打印出cookies
 8 print(response.cookies)##RequestCookieJar范例,我们运用items要领将其转换成元组,遍历美每一个cookie的的称号跟值。
 9 #第一种要领
10 for k,v in response.cookies.items():
11     print(k +"="+ v)
12 #第二种要领
13 print(resp.cookies.get_dict())

我们也能够运用cookie来保持我们在网站上的登录状况,以我学校的网站为例(能够自行找登录网站),起首登录网站,翻开F12,进入network面板----headers中,将cookies复制下来放进我们组织的headers中;

 1 import requests
 2  3 headers = {
 4     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3941.4 Safari/537.36",
 5     "Cookie": "JSESSIONID=加密字符串"
 6 }
 7  8 r = requests.get(url,headers=headers)
 9 10 print(r.text)

运转今后就会发明返返来的信息中有上岸后的效果,证实登录胜利。

(2)session(会话保持):

多个要求之间是能够同享cookie的。那末假如运用requests,也要到达同享cookie的目标,那末能够运用requests库给我们供应的session对象。注重,这里的session不是web开辟中的谁人session,这个处所只是一个会话的对象罢了。

上面的诠释能够有些笼统,打个比如你在爬取一个网站,第一次要求应用post登录了网站,第二次想猎取登录胜利后的信息,你再运用get要领要求个人信息页面,你发明要求不到,实际上上面的两个操纵是翻开了两个浏览器,是完整差别的。

所以有需求就有处理方案,如许我们就引出session对象,它能够保持同一个会话,也就是翻开一个浏览器的新标签页;如许就防备我们上岸后猎取不到信息的懊恼。

以登录大家网为例,运用requests来完成。示例代码以下:

 1 import requests
 2  3 url = "http://www.renren.com/PLogin.do"
 4 data = {"email":"email",'password':"password"}
 5 headers = {
 6     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
 7 }
 8  9 # 登录
10 session = requests.session()
11 #提交参数信息
12 session.post(url,data=data,headers=headers)
13 14 # 接见大鹏个人中间
15 resp = session.get('http://www.renren.com/880151247/profile')
16 17 print(resp.text)

注:session一般用于模仿登录胜利后举行下一步操纵。

(3).代办ip的运用

代办ip的运用场所:关于某些网站,我们测试的时刻要求频频能够猎取网页内容,然则当大规模且频仍的要求,网站能够涌现验证码、或许跳到登录认证页面,更有的会直接封掉客户端IP,致使肯定的时间内无法接见。

为了防备这类状况的发作,我们须要举行代办操纵,代办实在就是代办服务器,代办网站的话自行百度一下。

代办的概况:https://www.kuaidaili.com/doc/wiki/

代办分为下面几种范例:

-匿名度:
   - 通明:对方服务器能够晓得你运用了代办,而且也晓得你的实在IP
   - 匿名:对方服务器能够晓得你运用了代办,但不晓得你的实在IP
   - 高匿:对方服务器不晓得你运用了代办,更不晓得你的实在IP。
- 范例:
   - http:该范例的代办ip只能够提议http协定头对应的要求
   - https:该范例的代办ip只能够提议https协定头对应的要求

设置代办的体式格局:

1 import requests
2 proxies = {
3     "http":"ip:端口"4     "https":"ip:端口"5 }
6 requests.get(url,proxies=proxies)

总结:

requests的get和post要领经常使用的参数:

  • url

  • headers

  • data/params

  • proxies

你能够看会了,然则你敲了吗?

初学者

分享及胜利

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
requests用法基本-进阶

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/281978.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>