我通过爬取西刺代理获取代理 list ,如下面代码
def setProxiesConfig():
url = 'http://www.xicidaili.com/nn/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
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)
print(ip_list)
return ip_list
#获取随机 IP
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
获取列表后,随机取一个 IP{'http':'http://ip:9999'} 然后放到 get 中
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'
}
ipC=get_random_ip(ip_list)
web_data = requests.get(URL, headers=headers,proxie= ,verify=False,timeout=10)
soup = BeautifulSoup(web_data.text, 'lxml')
爬取了 46 个页面的时候还可以操作,但是之后就开始提示 timeout 了,就无论如何也不能爬取了,这是为啥?
1
zarte 2019-02-15 10:11:21 +08:00
开一个页面休息 5 秒试试
|
2
exceloo 2019-02-15 10:13:48 +08:00
随机 sleep,sleep 时间大于 10 秒
|
3
omph 2019-02-15 10:17:39 +08:00
time.sleep(randomint(3, 5))
|
4
locoz 2019-02-15 10:25:16 +08:00 via Android
你确定你这个代码能跑通?最下面 proxie=的位置后面都没东西了
|
5
locoz 2019-02-15 10:26:18 +08:00 via Android
而且那个参数名叫 proxies,不是 proxie。如果你的代码没问题的话,代理本身超时也是有可能的,注意看报错信息。
|
6
SpiderXiantang 2019-02-15 11:38:07 +08:00 via Android
西刺就别提了吧
|
7
gabon 2019-02-15 11:53:36 +08:00 via Android
这种免费代理就是垃圾,基本上不可以用的,最好是买代理。。
|
8
dongya 2019-02-15 14:49:19 +08:00
用收费代理吧
|
9
zxfgds 2019-02-15 22:25:06 +08:00
建议上 芝麻代理之类的, 靠谱点
|
10
zr8657 2019-02-16 09:37:44 +08:00
用之前线上 ip138 之类的检测下是否更换成功啊,免费的 ip 真的都挺垃圾
|
11
911speedstar 2019-02-18 18:44:03 +08:00
代理池要不断测试更新
|