爬西刺代理的高匿免费代理,并通过http://www.baidu.com进行验证代理是否可用,存入到excel文件中
查看源代码发现:
所有的代理信息都在tr标签里面(只有一个例外)
找到所有里面有td标签的tr标签
trs = soup.find_all('tr')
for tr in trs:
if tr.find('td'):
item = Items()
item.IP = tr.find_all('td')[1].get_text().strip()
item.Port = tr.find_all('td')[2].get_text().strip()
item.Add = tr.find_all('td')[3].get_text().strip()
item.Type = tr.find_all('td')[5].get_text().strip()
sum_agent += 1
items.append(item)
将所有的代理存入items中
然后通过对百度的访问来确定是否可用
x = 0
for i in xrange(sum_agent):
time.sleep(random.random()*3)
url_test_IP = 'http://www.baidu.com'
IP = 'http://'+items[i].IP.encode('utf-8')+':'+items[i].Port.encode('utf-8')
headers = {'User-Agent': fa.random}
proxies = {'http': IP,
'https': IP}
try:
response_test_IP = requests.get(url_test_IP, proxies=proxies, headers=headers)
except:
continue
if response_test_IP.status_code == 200:
sheet.write(x, 0, items[i].IP)
sheet.write(x, 1, items[i].Port)
sheet.write(x, 2, items[i].Add)
sheet.write(x, 3, items[i].Type)
sheet.write(x, 4, 'http://'+items[i].IP.encode('utf-8')+':'+items[i].Port.encode('utf-8'))
x += 1
response_test_IP.close()
在爬的过程中遇到的问题:
1、代理设置需要同时设置http和https(通过百度得知,至今还未知道原因)
我只爬了一页的代理,其中可用的很少,可以设置循环多爬几页,但是我爬一页就需要好久(时间是个很严重的问题)