我通过爬取西刺代理获取代理 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 代理池要不断测试更新 |