python:使用requests,bs4爬取西刺代理並驗證
阿新 • • 發佈:2019-02-02
爬西刺代理的高匿免費代理,並通過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(通過百度得知,至今還未知道原因)
我只爬了一頁的代理,其中可用的很少,可以設定迴圈多爬幾頁,但是我爬一頁就需要好久(時間是個很嚴重的問題)