本篇內(nèi)容介紹了“Python爬蟲(chóng)怎么使用http代理IP”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司成立于2013年,先為千陽(yáng)等服務(wù)建站,千陽(yáng)等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為千陽(yáng)企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
獲取代理IP,代碼如下:
#encoding=utf8
import urllib2
import BeautifulSoup
User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0'
header = {}
header['User-Agent'] = User_Agent
url = 'http://www.xicidaili.com/nn/1'
req = urllib2.Request(url,headers=header)
res = urllib2.urlopen(req).read()
soup = BeautifulSoup.BeautifulSoup(res)
ips = soup.findAll('tr')
f = open("../src/proxy","w")
for x in range(1,len(ips)):
ip = ips[x]
tds = ip.findAll("td")
ip_temp = tds[2].contents[0]+"\t"+tds[3].contents[0]+"\n"
# print tds[2].contents[0]+"\t"+tds[3].contents[0]
f.write(ip_temp)
代碼說(shuō)明:
a).這里我們使用的urllib2模塊,因?yàn)?,這個(gè)請(qǐng)求有點(diǎn)特殊,服務(wù)器會(huì)驗(yàn)證請(qǐng)求中的header(如有疑問(wèn),可參考http的相關(guān)資料)
b).urllib2與urllib的區(qū)別在于,urllib2發(fā)送請(qǐng)求的時(shí)候可攜帶參數(shù)(我現(xiàn)在只用到這點(diǎn)區(qū)別)
c).open()用于打開(kāi)文件,第一個(gè)參數(shù)是文件的路徑可以填絕對(duì)路徑,例如E:\\proxy(”\”在編程中是特殊字符,要用”\\”代表實(shí)際的”\”)。也可以是相對(duì)路徑,比 如”../src/proxy”,就是文件相對(duì)于代碼的位置。第二個(gè)參數(shù)”w”,代表打開(kāi)文件的權(quán)限,w代表寫(xiě)權(quán)限,r代表讀權(quán)限。這個(gè)在很多系統(tǒng)中都通用。比如,linux等
d).for循環(huán),如果之前學(xué)過(guò)java或者其他高級(jí)語(yǔ)言,可能不太習(xí)慣,因?yàn)樗麄冇玫氖莊or(;;)這樣的。python中的for循環(huán),in 表示X的取值,按順序取到in后面的參數(shù)
特別注意:別忘了for語(yǔ)句后面的冒號(hào)(”:”)
c).range函數(shù),代表生成一系列數(shù),如果range(0,6,1),意思就是從0開(kāi)始,到6結(jié)束(不包括6),每次增加1(也就是步長(zhǎng)為1),生成一個(gè)數(shù)組,結(jié)果就是[0, 1, 2, 3, 4, 5]
e).f.write()就是往文件里面寫(xiě)數(shù)據(jù),如果打開(kāi)文件的時(shí)候,沒(méi)有”w”權(quán)限,則無(wú)法寫(xiě)入。
并不是所有的代理都能用,原因有很多,可能是我們所處的網(wǎng)絡(luò)連不到這個(gè)代理,也有可能是這個(gè)代理,連不到我們的目標(biāo)網(wǎng)址,所以,我們要驗(yàn)證一下。以http://ip.chinaz.com/getip.aspx作為目標(biāo)網(wǎng)址為例(這個(gè)是測(cè)試ip地址的網(wǎng)址)代碼如下:
復(fù)制代碼
#encoding=utf8
import urllib
import socket
socket.setdefaulttimeout(3)
f = open("../src/proxy")
lines = f.readlines()
proxys = []
for i in range(0,len(lines)):
ip = lines[i].strip("\n").split("\t")
proxy_host = "http://"+ip[0]+":"+ip[1]
proxy_temp = {"http":proxy_host}
proxys.append(proxy_temp)
url = "http://ip.chinaz.com/getip.aspx"
for proxy in proxys:
try:
res = urllib.urlopen(url,proxies=proxy).read()
print res
except Exception,e:
print proxy
print e
continue
復(fù)制代碼
代碼說(shuō)明:
a).ip = lines[i].strip(“\n”).split(“\t”) 這個(gè)是去掉每行末尾的換行符(也就是”\n”),然后以制表符(也就是”\t”)分割字符串為字符串?dāng)?shù)組
b).proxy_temp = {“http”:proxy_host}其中http代表代理的類型,除了http之外還有https,socket等這里就以http為例
c).urllib.urlopen(url,proxies=proxy) 其中proxies就是代理。以代理模式訪問(wèn)目標(biāo)網(wǎng)址
d).socket.setdefaulttimeout(3)設(shè)置全局超時(shí)時(shí)間為3s,也就是說(shuō),如果一個(gè)請(qǐng)求3s內(nèi)還沒(méi)有響應(yīng),就結(jié)束訪問(wèn),并返回timeout(超時(shí))
“Python爬蟲(chóng)怎么使用http代理IP”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
當(dāng)前名稱:Python爬蟲(chóng)怎么使用http代理IP
標(biāo)題鏈接:http://www.rwnh.cn/article2/jipjic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、軟件開(kāi)發(fā)、標(biāo)簽優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)