华为云技术分享小白篇,认识Python最最最常用语重要的库Requests
Posted 华为云官方博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为云技术分享小白篇,认识Python最最最常用语重要的库Requests相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章