1. 程式人生 > >python:使用requests,bs4爬取西刺代理並驗證

python:使用requests,bs4爬取西刺代理並驗證

爬西刺代理的高匿免費代理,並通過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(通過百度得知,至今還未知道原因)

我只爬了一頁的代理,其中可用的很少,可以設定迴圈多爬幾頁,但是我爬一頁就需要好久(時間是個很嚴重的問題)