zoukankan      html  css  js  c++  java
  • requests

    >>>import requests
    >>> r = requests.get('http://www.zhidaow.com')  # 发送请求
    >>> r.status_code  # 返回码
    200
    >>> r.headers['content-type']  # 返回头部信息
    'text/html; charset=utf8'
    >>> r.encoding  # 编码信息
    'utf-8'
    >>> r.text  #内容部分(PS,由于编码问题,建议这里使用r.content)
    u'<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"...'
    ...

    >>>import requests
    接下来让我们获取一个网页,例如博客的首页:

    >>>r = requests.get('http://www.sharejs.com')
    接下来,我们就可以使用这个r的各种方法和函数了。
    另外,HTTP请求还有很多类型,比如POST,PUT,DELETE,HEAD,OPTIONS。也都可以用同样的方式实现:

    >>> r = requests.post("http://httpbin.org/post")
    >>> r = requests.put("http://httpbin.org/put")
    >>> r = requests.delete("http://httpbin.org/delete")
    >>> r = requests.head("http://httpbin.org/get")
    >>> r = requests.options("http://httpbin.org/get")

    在URLs中传递参数

    有时候我们需要在URL中传递参数,比如在采集百度搜索结果时,我们wd参数(搜索词)和rn参数(搜素结果数量),你可以手工组成URL,requests也提供了一种看起来很NB的方法:

    >>> payload = {'wd': '张亚楠', 'rn': '100'}
    >>> r = requests.get("http://www.baidu.com/s", params=payload)
    >>> print r.url
    u'http://www.baidu.com/s?rn=100&wd=%E5%BC%A0%E4%BA%9A%E6%A5%A0'

    可以通过r.headers来获取响应头内容。
    >>>r = requests.get('http://www.zhidaow.com')
    >>> r.headers
    {
    'content-encoding': 'gzip',
    'transfer-encoding': 'chunked',
    'content-type': 'text/html; charset=utf-8';
    ...
    }

    可以看到是以字典的形式返回了全部内容,我们也可以访问部分内容。
    >>> r.headers['Content-Type']
    'text/html; charset=utf-8'

    >>> r.headers.get('content-type')
    'text/html; charset=utf-8'

    设置超时时间

    我们可以通过timeout属性设置超时时间,一旦超过这个时间还没获得响应内容,就会提示错误。
    >>> requests.get('http://github.com', timeout=0.001)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    requests.exceptions.Timeout: HTTPConnectionPool(host='github.com', port=80): Request timed out. (timeout=0.001)

    理访问

    采集时为避免被封IP,经常会使用代理。requests也有相应的proxies属性。
    import requests

    proxies = {
    "http": "http://10.10.1.10:3128",
    "https": "http://10.10.1.10:1080",
    }

    requests.get("http://www.zhidaow.com", proxies=proxies)

    请求头内容

    请求头内容可以用r.request.headers来获取。
    >>> r.request.headers
    {'Accept-Encoding': 'identity, deflate, compress, gzip',
    'Accept': '*/*', 'User-Agent': 'python-requests/1.2.3 CPython/2.7.3 Windows/XP'}

    自定义请求头部

    伪装请求头部是采集时经常用的,我们可以用这个方法来隐藏:
    r = requests.get('http://www.zhidaow.com')
    print r.request.headers['User-Agent']
    #python-requests/1.2.3 CPython/2.7.3 Windows/XP

    headers = {'User-Agent': 'alexkh'}
    r = requests.get('http://www.zhidaow.com', headers = headers)
    print r.request.headers['User-Agent']
    #alexkh

  • 相关阅读:
    Java Web项目开发中常见路径获取方法
    Genymotion模拟器连接不上开发服务器解决办法
    百度鹰眼轨迹管理台部署到本地或者服务器上
    解决Hibernate4执行update操作,不更新数据的问题
    后台发送http请求通用方法,包括get和post
    Java后端发出post请求带参数并接收返回的json
    $.ajax()方法详解
    常见异常及解决办法
    jQuery通过地址获取经纬度demo
    python 导入模块与使用
  • 原文地址:https://www.cnblogs.com/lly-lly/p/5390960.html
Copyright © 2011-2022 走看看