python抓取数据,python使用socks代理抓取数据
在python中,正常的抓取数据直接使用urllib2 这个模块:
运行下面代码
import urllib2 url = 'http://fanyi.baidu.com/' stream = urllib2.urlopen(url) cont = stream.read() print cont
如果要走http代理的话,我们也可以使用urllib2,不需要引用别的模块:
运行下面代码
import urllib2 url = 'https://clients5.google.com/pagead/drt/dn/dn.js' proxy_handler = urllib2.ProxyHandler({'http':'127.0.0.1:1080'}) opener = urllib2.build_opener(proxy_handler) f = opener.open(url) print f.read()
如果要使用socks5代理, 我们需要别的模块 sockes, socket, 我们可以通过pip install socksipy , (我是windows的系统, 还需要另外的一个模块, pip install win_inet_pton) 建议直接下载安装包到python的安装目录,切换到对应目录,执行python setup.py install安装,真被大天朝的墙给坑死了, 然后在需要代理的模块上添加socket代码:
运行下面代码
import socks import socket socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080) socket.socket = socks.socksocket
完整的代码如下:
运行下面代码
//添加的代码开头
import win_inet_pton import socks import socket socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 1080) socket.socket = socks.socksocket
//添加的代码结束 import urllib2 steam = urllib2.urlopen('https://clients5.google.com/pagead/drt/dn/dn.js') print steam.read()
使用requests模块, 我们也在requests之前添加socket的代码,后面的http请求不用改了,还是走原来的逻辑:
运行下面代码
//添加的代码开头
import win_inet_pton import socket import socks import requests ip='localhost' port = 1080 socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, ip, port) socket.socket = socks.socksocket //添加的代码结束
url = 'https://clients5.google.com/pagead/drt/dn/dn.js' print requests.get(url).text
相关:
github:https://github.com/mitsuhiko/python-geoip/issues/4
作者: NONO
出处:http://www.cnblogs.com/diligenceday/
企业网站:http://www.idrwl.com/ 厦门点燃未来网络科技
开源博客:http://www.github.com/sqqihao
QQ:287101329
微信:18101055830
本文作者:方方和圆圆
本文链接:https://www.cnblogs.com/diligenceday/p/5719978.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步