用Python批量爬取優質ip代理

前言

有時候爬的次數太多時ip容易被禁,因此須要ip代理的幫助。
今天爬的思路是:到雲代理獲取大量ip代理,逐個檢測,將超時不可用的代理排除,留下優質的ip代理。html

1、爬蟲分析

首先看看今天要爬取的網址瀏覽器

http://www.ip3366.net/free/

 

1.分析網址

首先判斷網址是動態網址仍是靜態網址,靜態網址就是直接能經過翻頁從網址裏找到頁碼,如下是每頁的網址:bash

http://www.ip3366.net/free/?stype=1&page=2
http://www.ip3366.net/free/?stype=1&page=3
http://www.ip3366.net/free/?stype=1&page=4

因此推出是靜態網址,每頁page遞增1的規律網絡

2.分析數據

今天打算用xpath來解析數據,首先打開F12,能夠看到每條代理的信息都包裹在tr中,所以咱們能夠先經過tr獲取所有信息,再遍歷tr裏的ip,端口和類型
在這裏插入圖片描述app

2、完整代碼

附上完整代碼和詳細註釋學習

import requests
from lxml import etree
# 5.檢測ip質量 def check_ip(proxies_list): headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1'} can_use=[] for ip in proxies_list: try: # 設置超時時間timeout,若是響應時間超出則不合格 response=requests.get(url=base_url,headers=headers,proxies=ip,timeout=0.1) if response.status_code==200: can_use.append(ip) except Exception: print('當前代理ip:',ip,'請求超時,檢測不合格') finally: print('當前代理ip:',ip,'檢測經過') return can_use proxies_list=[] # 爬3頁 for page in range(1,4): print('---------------正在爬取第{}頁數據---------------'.format(page)) # 1.分析url,添加headers,假裝成瀏覽器 base_url='http://www.ip3366.net/free/?stype=1&page={}'.format(str(page)) headers = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1'} # 2.發送請求 response=requests.get(url=base_url,headers=headers) # 3.解析數據 response.encoding='gbk' page_text=response.text tree=etree.HTML(page_text) # 獲取全部ip代理的信息,就是全部tr ip_list=tree.xpath('//*[@id="list"]/table/tbody/tr') # 遍歷ip代理 for tr in ip_list: # xpath默認是列表類型,加個[0]就是文本類型了 http_type=tr.xpath('./td[4]/text()')[0] ip=tr.xpath('./td[1]/text()')[0] port=tr.xpath('./td[2]/text()')[0] # 4.構建代理ip結構(格式像這樣子{'HTTPS': '47.100.182.193:8081'}) proxies_dict={} proxies_dict[http_type]=ip+":"+port print('保存成功:',proxies_dict) proxies_list.append(proxies_dict) #放入空列表 print('得到代理ip數量:',len(proxies_list)) print('--------------------正在檢測ip質量---------------') can_use=check_ip(proxies_list) print('質量高的:',can_use) print('質量高的代理ip數量:',len(can_use)) 

運行效果以下:
在這裏插入圖片描述
在這裏插入圖片描述
網站

總結

這個網站一次爬取次數多了,瀏覽器代理(headers)容易掛,換個瀏覽器代理便可。ui


本文的文字及圖片來源於網絡,僅供學習、交流使用,不具備任何商業用途,若有問題請及時聯繫咱們以做處理
url

想要獲取更多Python學習資料能夠加
QQ:2955637827私聊
或加Q羣630390733
你們一塊兒來學習討論吧!
spa

相關文章
相關標籤/搜索