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 

廈門點燃未來網絡科技有限公司, 是廈門最好的微信應用, 小程序, 微信網站, 公眾號開發公司


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM