python 爬蟲 代理池

Mandy。發表於2019-03-09

首先找一個免費的代理網站
在這裡插入圖片描述
獲取請求地址
在這裡插入圖片描述
檢視網頁原始碼,分析提取規則
在這裡插入圖片描述
根據奇數偶數分別抓取xpath元素,再合併列表
在這裡插入圖片描述
設定詳細提取規則,提取ip地址和連線速度
在這裡插入圖片描述
設定篩選條件,速度太慢的不要
在這裡插入圖片描述
這裡直接判斷第一位是0,因為一秒以下會抓取到一個字串比如0.177之類的

最後上結果
在這裡插入圖片描述
一頁爬下來,可用的大概70幾個

以下是完整程式碼:

# 代理池
import requests
from lxml import etree

url = 'https://www.xicidaili.com/nn/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
}
response = requests.get(url,headers=headers)  # 先抓一頁 暫時夠用了
eroot = etree.HTML(response.text)
ip_odd_element_list = eroot.xpath('//*[@id="ip_list"]/tr[@class="odd"]')
ip_even_element_list = eroot.xpath('//*[@id="ip_list"]/tr[@class=""]')
ip_element_raw = ip_odd_element_list + ip_even_element_list
# 獲取所有ip元素列表,因為一會兒要從同一個元素中取出速度資訊

ip_list = []
for ip_element in ip_element_raw:
    ip = ip_element.xpath('./td[2]/text()')
    speed = ip_element.xpath('./td[7]/div[1]/@title')
    if speed[0][0] == '0' :       # 只要連線速度在一秒以內的
        ip_list.append(ip)

print(ip_list)
print(len(ip_list))

相關文章