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(通過百度得知,至今還未知道原因)

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

https://github.com/YoungChild/xicidaili_python

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章