zoukankan      html  css  js  c++  java
  • 【华为云技术分享】小白篇,认识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)

    作者:倪平宇

  • 相关阅读:
    Linux下的目录结构
    VM
    代码命名规范
    java环境及配置
    Code::Blocks 使用Cygwin编译加调试
    vscode使用体会
    openwrt编译笔记
    ubuntu20 使用root登录
    程序员如何更好的表达自己的想法- Graphviz:关系图脚本绘制工具-转
    编译codelite心得
  • 原文地址:https://www.cnblogs.com/huaweicloud/p/12384741.html
Copyright © 2011-2022 走看看