python爬蟲設(shè)置每個(gè)代理ip的方法:
1.添加一段代碼,設(shè)置代理,每隔一段時(shí)間換一個(gè)代理。
urllib2 默認(rèn)會(huì)使用環(huán)境變量 http_proxy 來設(shè)置 HTTP Proxy。假如一個(gè)網(wǎng)站它會(huì)檢測(cè)某一段時(shí)間某個(gè) IP 的訪問次數(shù),如果訪問次數(shù)過多,它會(huì)禁止你的訪問。所以你可以設(shè)置一些代理服務(wù)器來幫助你做工作,每隔一段時(shí)間換一個(gè)代理,網(wǎng)站君都不知道是誰在搗鬼了,這酸爽! 下面一段代碼說明了代理的設(shè)置用法。
1
2
3
4
5
6
7
8
9
|
import urllib2 enable_proxy = True proxy_handler = urllib2.ProxyHandler({ "http" : 'http://some-proxy.com:8080' }) null_proxy_handler = urllib2.ProxyHandler({}) if enable_proxy: opener = urllib2.build_opener(proxy_handler) else : opener = urllib2.build_opener(null_proxy_handler) urllib2.install_opener(opener) |
2.Timeout 設(shè)置,可以解決一些網(wǎng)站出現(xiàn)響應(yīng)過慢而造成的影響問題。
之前已經(jīng)說過urlopen 方法了,第三個(gè)參數(shù)就是 timeout 的設(shè)置,可以設(shè)置等待多久超時(shí),為了解決一些網(wǎng)站實(shí)在響應(yīng)過慢而造成的影響。 例如下面的代碼,如果第二個(gè)參數(shù) data 為空那么要特別指定是 timeout 是多少,寫明形參,如果 data 已經(jīng)傳入,則不必聲明。
1
2
|
import urllib2 response = urllib2.urlopen( 'http://www.baidu.com' , timeout = 10 ) |
1
2
|
import urllib2 response = urllib2.urlopen( 'http://www.baidu.com' ,data, 10 ) |
以上就是Python爬蟲中設(shè)置代理的方法。結(jié)尾的時(shí)候我們補(bǔ)充了timeout的用法,本意是希望可以讓大家需要網(wǎng)絡(luò)過慢問題能有好的解決出路。
不過,地址代理方面用的較為多,所以要著重學(xué)習(xí)。如果需要用的ip可以試試太陽http,爬蟲采集、營(yíng)銷推廣、工作室等行業(yè)首選的IP產(chǎn)品,全國(guó)城市線路數(shù)量200+,API調(diào)用頻率不限制,不限并發(fā),24小時(shí)不斷更新IP池。
知識(shí)點(diǎn)擴(kuò)展:
代碼擴(kuò)展:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
from bs4 import BeautifulSoup import requests import random def get_ip_list(url, headers): web_data = requests.get(url, headers = headers) soup = BeautifulSoup(web_data.text, 'lxml' ) ips = soup.find_all( 'tr' ) ip_list = [] for i in range ( 1 , len (ips)): ip_info = ips[i] tds = ip_info.find_all( 'td' ) ip_list.append(tds[ 1 ].text + ':' + tds[ 2 ].text) return ip_list def get_random_ip(ip_list): proxy_list = [] for ip in ip_list: proxy_list.append( 'http://' + ip) proxy_ip = random.choice(proxy_list) proxies = { 'http' : proxy_ip} return proxies if __name__ = = '__main__' : url = 'http://www.xicidaili.com/nn/' headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.60 Safari/537.17' } ip_list = get_ip_list(url, headers = headers) proxies = get_random_ip(ip_list) print (proxies) |
到此這篇關(guān)于python爬蟲設(shè)置每個(gè)代理ip的簡(jiǎn)單方法的文章就介紹到這了,更多相關(guān)python爬蟲如何設(shè)置每個(gè)代理ip內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://www.py.cn/jishu/spider/32881.html