爬虫开发python工具包介绍 (2)
本文来自网易云社区
作者:王涛
可选参数我们一一介绍一下:
| 参数 | 释义 | 示例 |
| params | 生成url中?号后面的查询Key=value | 示例1:
>>>payload = {'key1': 'value1', 'key2': 'value2'}
示例2: >>> param = 'httpparams' |
| data | 支持字典、列表、字符串。 post方法中常用,模拟html中的form表单 |
示例1:
>>> payload = {'key1': 'value1', 'key2': 'value2'}
示例2: >>> payload = (('key1', 'value1'), ('key1', 'value2'))
|
| json | post时使用,传递json数据到服务端, 很多ajax请求是传递的json |
示例1:
r = requests.post(url, json={"key":"value"}})
抓取的报文头如下,content-type:application/json |
| headers | 自定义http头,它会和request自己的缺省头进行合并之后作为请求的header. 注意: 所有的 header 值必须是 string、bytestring 或者 unicode。 |
示例1:
r = requests.post(url,headers={"user-agent":"test"})
|
| cookies | 可以通过cookies访问应答里的cookie, 也可以向服务器发送自定义的cookie. 通过自定义的cookie对象,还可以指定有效域等属性 |
示例1:获取应答中的cookie
>>> url ='http://example.com/some/cookie/setting/url' 示例2: 向服务端发送cookie >>> jar = requests.cookies.RequestsCookieJar() |
| files | 上传多部分编码(multipart-encoded)文件 | 示例1 :上传一个文件
>>> url = 'http://httpbin.org/post' 示例2 : 显示地设置文件名,文件类型和请求头 >>> url = 'http://httpbin.org/post' |
| auth | 支持多 HTTPBasicAuth/HTTPDigestAuth/HTTPProxyAuth 种认证 | 示例1
>>>url = 'http://httpbin.org/digest-auth/auth/user/pass' 抓包后,http头如下: GET http://httpbin.org/digest-auth/auth/user/pass HTTP/1.1 |
| timeout | 1 float:连接等待时间,只针对socket连接过程有效。 2 tuple:(connect timeout, read timeout) | 示例1:
>>> requests.get('http://github.com', timeout=0.001)
|
| allow_redirects | 如果你使用的是GET、OPTIONS、POST、PUT、PATCH 或者 DELETE, 那么你可以通过 allow_redirects 参数禁用重定向处理. 注:在爬虫过程中,我们有些场景需要禁用跳转,置为False, 默认True |
示例1 收到3xx时,会主动跳转访问:
>>>r = requests.get('http://github.com', allow_redirects=False)
|
| proxies | 配置代理信息,没啥好讲的.根据实际情况配置http,https代理 | 示例1:
>>>proxies = {
|
| stream | 如果应答是流式的时候,需要把stream设置成true.注:需要调用主动关闭,否则连接不会释放 | 示例 1:下载百度图片:
import requests |
| verify | 默认值为True,即校验服务端证书。 如果是字符串,则为CA_BUNDLE的路径,即证书路径。如果找不到证书, 可以用示例2中的Fiddler中的PEM替代,也可以安装certifi包(自带了一套requests信任的根证书) 个人理解:即浏览器访问Https网站有时会提示需要信任证书的功能一样。 | 示例1:关闭证书验证(推荐)
r=requests.get(url, verify=False) 示例2 :借用Fiddler转换之后的PEM证书去访问 中亚. FiddlerRoot.zip 下载地址: headers = {
|
| cert | 类型: 字符串:代表ssl客户端的cert文件(.pem)文件路径 元组:('cert','key'),verify给定的服务端证书, cert给定的是客户端的证书(对于https双向认证的情况) | 暂未测试过,暂未遇到过需要用这个字段的情况。感兴趣的可以研究一下 |
三、tornado中的关键函数及参数
1 tornado 非阻塞的httpclient
tornado有两种非阻塞的httpclient的实现,一个是SimpleAsyncHTTPClient,一个是CurlAsyncHTTPClient. 你可以调用它们的基类AsyncHTTPClient,通过AsyncHTTPClient.configure方法来选择使用上面的哪一个实现,或者直接实例化上面的任意一个子类。缺省的是SimpleAsyncHTTPClient,虽然它已经能满足绝大多数用户的需求,但是我们选择有更多优点的 CurlAsyncHTTPClient .
CurlAsyncHTTPClient 有更多特性支持,例如 代理设置,指定网络出接口等
对于那些与HTTP兼容不太好的网站,CurlAsyncHTTPClient也能兼容访问,
CurlAsyncHTTPClient 更快
Tornado 2.0 版本之前,CurlAsyncHTTPClient是默认的。
2 tornado 关键函数、参数介绍
示例代码(与前面类似):
@gen.coroutinedef fetch_url(url):
"""抓取url"""
try:
c = CurlAsyncHTTPClient() # 定义一个httpclient
req = HTTPRequest(url=url) # 定义一个请求
response = yield c.fetch(req) # 发起请求
print response.body
IOLoop.current().stop() # 停止ioloop线程
except: print traceback.format_exc()
可以看到,这个httpclient,使用起来也很方便。先创建一个HTTPRequest,然后调用HTTPClient的fetch方法来发起这个请求。
此处我们就看一下HTTPRequest的定义,看看有哪些关键参数是我们需要了解的。
class HTTPRequest(object):
"""HTTP client request object.""" # Default values for HTTPRequest parameters.
# Merged with the values on the request object by AsyncHTTPClient
# implementations.
_DEFAULTS = dict(
connect_timeout=20.0,
request_timeout=20.0,
follow_redirects=True,
max_redirects=5,
decompress_response=True,
proxy_password='',
allow_nonstandard_methods=False,
validate_cert=True) def __init__(self, url, method="GET", headers=None, body=None,
auth_username=None, auth_password=None, auth_mode=None,
connect_timeout=None, request_timeout=None,
if_modified_since=None, follow_redirects=None,
max_redirects=None, user_agent=None, use_gzip=None,
network_interface=None, streaming_callback=None,
header_callback=None, prepare_curl_callback=None,
proxy_host=None, proxy_port=None, proxy_username=None,
proxy_password=None, proxy_auth_mode=None,
allow_nonstandard_methods=None, validate_cert=None,
ca_certs=None, allow_ipv6=None, client_key=None,
client_cert=None, body_producer=None,
expect_100_continue=False, decompress_response=None,
ssl_options=None):
r"""All parameters except ``url`` are optional.
网易云免费体验馆,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 云计算交互设计师的正确出装姿势
【推荐】 从细节处谈Android冷启动优化
爬虫开发python工具包介绍 (2)的更多相关文章
- 爬虫开发python工具包介绍 (1)
本文来自网易云社区 作者:王涛 本文大纲: 简易介绍今天要讲解的两个爬虫开发的python库 详细介绍 requests库及函数中的各个参数 详细介绍 tornado 中的httpcilent的应用 ...
- 爬虫开发python工具包介绍 (4)
本文来自网易云社区 作者:王涛 此处我们给出几个常用的代码例子,包括get,post(json,表单),带证书访问:Get 请求 @gen.coroutine def fetch_url(): ...
- 爬虫开发python工具包介绍 (3)
本文来自网易云社区 作者:王涛 :arg str url: URL to fetch :arg str method: HTTP method, e.g. " ...
- Python爬虫开发与项目实战
Python爬虫开发与项目实战(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1MFexF6S4No_FtC5U2GCKqQ 提取码:gtz1 复制这段内容后打开百度 ...
- Python 3网络爬虫开发实战》中文PDF+源代码+书籍软件包
Python 3网络爬虫开发实战>中文PDF+源代码+书籍软件包 下载:正在上传请稍后... 本书书籍软件包为本人原创,在这个时间就是金钱的时代,有些软件下起来是很麻烦的,真的可以为你们节省很多 ...
- Python 3网络爬虫开发实战中文 书籍软件包(原创)
Python 3网络爬虫开发实战中文 书籍软件包(原创) 本书书籍软件包为本人原创,想学爬虫的朋友你们的福利来了.软件包包含了该书籍所需的所有软件. 因为软件导致这个文件比较大,所以百度网盘没有加速的 ...
- Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包(免费赠送)+崔庆才
Python 3网络爬虫开发实战中文PDF+源代码+书籍软件包+崔庆才 下载: 链接:https://pan.baidu.com/s/1H-VrvrT7wE9-CW2Dy2p0qA 提取码:35go ...
- 《Python 3网络爬虫开发实战中文》超清PDF+源代码+书籍软件包
<Python 3网络爬虫开发实战中文>PDF+源代码+书籍软件包 下载: 链接:https://pan.baidu.com/s/18yqCr7i9x_vTazuMPzL23Q 提取码:i ...
- Python 3网络爬虫开发实战书籍
Python 3网络爬虫开发实战书籍,教你学会如何用Python 3开发爬虫 本书介绍了如何利用Python 3开发网络爬虫,书中首先介绍了环境配置和基础知识,然后讨论了urllib.reques ...
随机推荐
- C++提高编译与链接速度的资料
1,https://blog.csdn.net/lihao21/article/details/47610309 2,https://www.zhihu.com/question/37330979 3 ...
- Cassandra读写性能测试
1. 测试目的 测试Cassandra集群读写TPS的极值,确定Cassandra读写性能. 2. 测试环境 2.1 硬件信息 CPU 8核 Intel(R) Xeon(R) CPU E5-2650 ...
- ubuntu 重启显卡报错 nvidia
1.我装玩显卡以后重启报错了 解决了5个小时才解决,先贴个当时报错的图 第一个图是没有加nomodeset 出先的 当你出现第二个图片的时候证明你离成功不远了 从头开始: 1.开机,出现 ubuntu ...
- 02- 画文字和图片-------------之前写的那个微博项目,可以试试用画图片的方式来处理,这样应该比UILabel 代码少点,一会试试
1.画图片 - (void)drawRect:(CGRect)rect { // Drawing code UIImage *image = [UIImage imageNamed:@"pa ...
- c# 遍历一个对象里面的全部属性
比如我现在有一个Student的对象,里面有属性stuName,stuAge,stuGender,我现在该怎么写循环才能遍历这几个属性? Student s=new...... foreach (Sy ...
- HBase、HDFS与本地文件系统之间的关系
一.文件系统 1. 概念 所谓文件系统,是操作系统用于明确磁盘或分区上的文件的方法和数据结构:即在磁盘上组织文件的方法.也指用于存储文件的磁盘或分区,或文件系统种类. 2. Local File Sy ...
- java中如何实现两个值互换
public class SwapVariable { public static void main(String[] args) { // 将两个数据进行交换: method2(,); metho ...
- Maven面试宝典啊
一.Maven有哪些优点和缺点 优点如下: 简化了项目构建.依赖管理: 易于上手,对于新手可能一个"mvn clean package"命令就可能满足他的工作 便于与持续集成工具( ...
- 浅谈利用PLSQL的多线程处理机制,加快处理大数据表的效率
我们在处理大数据表的时候经常会感觉的处理速度不够快,效率不够高,那么今天下面我就来简单实现下PLSQL的多线程编程处理数据: 我模拟一个简单的场景,把某一张表中的数据(当然这张表的数据非常大)同步到目 ...
- vmware centos7 静态ip设置
最近在学习linux环境部署~~~~ 首先,将网络适配设置成为桥接模式 查看本机IP地址,ipconfig,记住ipv4地址和默认网关地址,等会配置的时候要用 启动Centos,进入终端模式,设置IP ...