码迷,mamicode.com
首页 > 编程语言 > 详细

【华为云技术分享】小白篇,认识Python最最最常用语重要的库Requests

时间:2020-02-29 20:29:01      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:ima   理解   request   访问   网络   src   windows   代理   说明   

Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它.

下面我们来认识这个库

Requests库是Python爬虫中最最最最最最重要与常见的库,一定要熟练掌握它.

下面我们来认识这个库

 1 import requests
 2 url = http://www.baidu.com
 3 r = requests.get(url)
 4 print type(r)
 5 print r.status_code
 6 print r.encoding
 7 #print r.content
 8 print r.cookies
 9 
10 
11 得到:
12 <class requests.models.Response>
13 200
14 ISO-8859-1
15 <RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>

2.Get请求方式

1 values = {user:aaa,id:123}
2 url = http://www.baidu.com
3 r = requests.get(url,values)
4 print r.url
5 
6 得到:http://www.baidu.com/?user=aaa&id=123

3.Post请求方式

1 values = {user:aaa,id:123}
2 url = http://www.baidu.com
3 r = requests.post(url,values)
4 print r.url
5 #print r.text
6 
7 得到:
8 http://www.baidu.com/

4.请求头headers处理

1 user_agent = {Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400}
2 header = {User-Agent:user_agent}
3 url = http://www.baidu.com/
4 r = requests.get(url,headers=header)
5 print r.content

注意处理请求的headers
很多时候我们服务器会检验请求是否来自于浏览器,所以我们需要在请求的头部伪装成浏览器来请求服务器.一般做请求的时候,最好都要伪装成浏览器,防止出现拒绝访问等错误,这也是一种反爬虫的一种策略

特别说明,以后无论我们做什么请求,一定要带上headers,千万不要偷懒省事,把这里当成一条交通规则来理解,闯红灯不一定会发生危险但不安全,为了省事,我们遵循红灯停绿灯行就够了,做网络爬虫请求也一样,必须把这个headers加上,以防出错.

1 user_agent = {Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4295.400 QQBrowser/9.7.12661.400}
2 header = {User-Agent:user_agent}
3 url = http://www.qq.com/
4 request = urllib2.Request(url,headers=header)
5 response = urllib2.urlopen(request)
6 print response.read().decode(gbk)#这里注意一下需要对读取的网页内容进行转码,先要查看一下网页的chatset是什么格式.

在浏览器上打开www.qq.com然后按F12,查看User-Agent:

User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求
Content-Type : 在使用 REST 接口时,服务器会检查该值,用来确定 HTTP Body 中的内容该怎样解析。
application/xml :在 XML RPC,如 RESTful/SOAP 调用时使用
application/json :在 JSON RPC 调用时使用
application/x-www-form-urlencoded :浏览器提交 Web 表单时使用
在使用服务器提供的 RESTful 或 SOAP 服务时, Content-Type 设置错误会导致服务器拒绝服务

5.响应码code与响应头headers处理

 1 url = http://www.baidu.com
 2 r = requests.get(url)
 3 
 4 if r.status_code == requests.codes.ok:
 5  print r.status_code
 6  print r.headers
 7  print r.headers.get(content-type)#推荐用这种get方式获取头部字段
 8 else:
 9  r.raise_for_status()
10 
11 得到:
12 200
13 {Content-Encoding: gzip, Transfer-Encoding: chunked, Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/, Server: bfe/1.0.8.18, Last-Modified: Mon, 23 Jan 2017 13:27:57 GMT, Connection: Keep-Alive, Pragma: no-cache, Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform, Date: Wed, 17 Jan 2018 07:21:21 GMT, Content-Type: text/html}
14 text/html

6.cookie处理

1 url = https://www.zhihu.com/
2 r = requests.get(url)
3 print r.cookies
4 print r.cookies.keys()
5 
6 得到:
7 <RequestsCookieJar[<Cookie aliyungf_tc=AQAAACYMglZy2QsAEnaG2yYR0vrtlxfz for www.zhihu.com/>]>
8 [aliyungf_tc]

7. 重定向与历史消息

处理重定向只是需要设置一下allow_redirects字段即可,将allow_redirectsy设置为True则是允许重定向的,设置为False则禁止重定向的。

1 r = requests.get(url,allow_redirects = True)
2 print r.url
3 print r.status_code
4 print r.history
5 
6 得到:
7 http://www.baidu.com/
8 200
9 []

8.超时设置

超时选项是通过参数timeout来设置的
python url = ‘http://www.baidu.com‘ r = requests.get(url,timeout = 2)

9.代理设置

1 proxis = {
2  http:http://www.baidu.com,
3  http:http://www.qq.com,
4  http:http://www.sohu.com,
5 
6 }
7 
8 url = http://www.baidu.com
9 r = requests.get(url,proxies = proxis)

作者:倪平宇

技术图片

【华为云技术分享】小白篇,认识Python最最最常用语重要的库Requests

标签:ima   理解   request   访问   网络   src   windows   代理   说明   

原文地址:https://www.cnblogs.com/huaweicloud/p/12384741.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!