proxy在爬虫中的使用姿势
文章目录
通过爬虫获取数据会经常被服务器ban掉ip,所以有个有效的proxy pool十分必要。这几天在爬网易云音乐的用户数据,顺便搞了个proxyhunter,并且尝试发布成pip包:proxyhunter,方便以后的使用。下面主要说下requests在进行请求的时候,proxy如何设置,以及我这个proxyhunter如何使用。
这里获取的proxy都是免费的,来自http://www.kuaidaili.com/。如果对proxy有比较高的要求,可以使用付费版的,我买了一周的开放代理,和免费的比起来,返回的代理列表中可用的比例相对来说还是挺高的。
request的proxy
在利用requests进行数据请求的时候,可以通过设置proxy来指定请求的proxy,当然,如果proxy不可用,请求是无法返回所需要的数据的。
|
|
可以看到,在通过request调用get的时候,设置proxies=proxies
即可。
通过请求http://ip.cn/
可以查询到当前的ip和port,前提是当前的proxy可用。
proxyhunter
由于是第一次向pypi提交python包,还是有必要记录一下过程:
- 第一步当然是注册用户
- 在完成注册和邮箱验证之后,可以安装一个twine,稍后上传包会用到这个工具
- 打包代码:
1 2 3 4 5 6 7
├── LICENSE ├── README.md ├── proxyhunter │ ├── __init__.py │ └── huntingOn.py ├── requirements.txt └── setup.py
初始情况下,自己的代码放在proxyhunter目录中,编写打包相关代码,在
setup.py
中:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
from setuptools import setup, find_packages setup( name="proxyhunter", version="0.0.1", keywords=("pip", "http", "http proxy"), description="free available http proxy from web", long_description="proxy hunter", license="MIT Licence", url="https://eclipsesv.com", author="wangmengcn", author_email="eclipse_sv@163.com", packages=find_packages(), include_package_data=True, platforms="any", install_requires=["requests", "lxml", "bs4"] )
这里边的配置根据自己要发布包的具体情况而定。 然后就可以通过
1 2
python setup.py bdist_egg # easy_install python setup.py sdist # pip
在dist目录中生成对应文件:
1 2
├── proxyhunter-0.0.1-py2.7.egg └── proxyhunter-0.0.1.tar.gz
这样就完成了代码的打包。🍺🍺🍺
- 发布代码
使用刚才安装的工具twine:
twine upload dist/*
在命令行中输入对应内容即可。 这时候,目录结构应该是这样的:
|
|
并且,网站上可以看到相关的内容。
proxyhunter用法
由于现在已经打包了,用的时候也会十分简单:
- 安装
pip install proxyhunter
- 使用
|
|
文章作者 rgozi
上次更新 2017-08-28