Python3 requests爬取代理IP並驗證可用性(附多執行緒模式)
簡要介紹:
使用python3 環境,需要自己安裝的包有requests (網址請求,獲取頁面資訊)和 Lxml(頁面解析,資訊提取) 。
首先確定從何處獲取 “IP”,本人此次爬取的是 西刺網的免費IP代理。
大概流程:
- 請求有免費IP的網址(本次使用“http://www.xicidaili.com/nn/”)
- 獲取網址的頁面資訊
- 從已經獲得的頁面資訊中,提取有用的資料(關於代理IP的)。
- 對爬取的IP資料進行篩選,驗證IP 的是否可用(**西刺網上的免費IP並不是全部一定可用**)
- 將有用的IP資訊(IP地址及埠號)進行儲存,寫入文
import requests from lxml import etree #代理IP的資訊儲存 def write_proxy(proxies): print(proxies) for proxy in proxies: with open("ip_proxy.txt", 'a+') as f: print("正在寫入:", proxy) f.write(proxy + '\n') print("錄入完成!!!") #解析網頁,並得到網頁中的代理IP def get_proxy(html): #對獲取的頁面進行解析 selector = etree.HTML(html) #print(selector.xpath("//title/text()")) proxies = [] #資訊提取 for each in selector.xpath("//tr[@class='odd']"): #ip.append(each[0]) ip = each.xpath("./td[2]/text()")[0] port = each.xpath("./td[3]/text()")[0] proxy = ip + ":" + port proxies.append(proxy) print(len(proxies)) test_proxies(proxies) #驗證已得到IP的可用性,本段程式碼通過訪問百度網址,返回的response狀態碼判斷(是否可用)。 def test_proxies(proxies): proxies = proxies url= "http://www.baidu.com/" header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", } normal_proxies=[] count = 1 for proxy in proxies: print("第%s個。。" % count) count+=1 try: response=requests.get(url,headers=header,proxies= {"http":proxy},timeout= 1) if response.status_code == 200: print("該代理IP可用:",proxy) normal_proxies.append(proxy) else: print("該代理IP不可用:",proxy) except Exception: print("該代理IP無效:", proxy) pass #print(normal_proxies) write_proxy(normal_proxies) def get_html(url): header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", } response = requests.get( url, headers=header, ) #print(response.text) get_proxy(response.text) if __name__ == "__main__": url = "http://www.xicidaili.com/nn/" get_html(url)
多執行緒模式:
因為驗證IP是否可用,程式是序列(故此只能驗證一個結束後,才進行驗證下一個,**效率極低**。)
流程還是同上。
import requests import threading from lxml import etree #解析網頁,並得到網頁中的IP代理 def get_proxy(html): selector = etree.HTML(html) #print(selector.xpath("//title/text()")) proxies = [] for each in selector.xpath("//tr[@class='odd']"): #ip.append(each[0]) ip = each.xpath("./td[2]/text()")[0] port = each.xpath("./td[3]/text()")[0] #拼接IP地址,埠號 proxy = ip + ":" + port proxies.append(proxy) print(len(proxies)) test_proxies(proxies) def thread_write_proxy(proxy): with open("./ip_proxy.txt", 'a+') as f: print("正在寫入:", proxy) f.write(proxy + '\n') print("錄入完成!!!") #新增執行緒模式 def thread_test_proxy(proxy): url = "http://www.baidu.com/" header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", } try: response = requests.get( url, headers=header, proxies={"http": proxy}, timeout=1) if response.status_code == 200: print("該代理IP可用:", proxy) #normal_proxies.append(proxy) thread_write_proxy(proxy) else: print("該代理IP不可用:", proxy) except Exception: print("該代理IP無效:", proxy) pass #驗證已得到IP的可用性 def test_proxies(proxies): proxies = proxies #print("test_proxies函式開始執行。。。\n", proxies) for proxy in proxies: test = threading.Thread(target=thread_test_proxy, args=(proxy, )) test.start() def get_html(url): header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36", } response = requests.get( url, headers=header, ) #print(response.text) get_proxy(response.text) if __name__ == "__main__": url = "http://www.xicidaili.com/nn/" get_html(url)
相關推薦
Python3 requests爬取代理IP並驗證可用性(附多執行緒模式)
簡要介紹: 使用python3 環境,需要自己安裝的包有requests (網址請求,獲取頁面資訊)和 Lxml(頁面解析,資訊提取) 。 首先確定從何處獲取 “IP”,本人此次爬取的是 西刺網的免費IP代理。 大概流程: 請求有免費IP的網址(本次使用“htt
利用python爬蟲批量獲取代理IP並驗證可用性
# -*- coding: utf-8 -*- from bs4 import BeautifulSoup import urllib2 import httplib import threading import sys reload(sys) sys.setdefaultencoding('utf-8'
爬資料時?IP老被封?這樣就不會被封了!爬取西刺代理IP並驗證
胡蘿蔔醬最近在爬取知乎使用者資料,然而爬取不了一會,IP就被封了,所以去爬取了西刺代理IP來使用。 這裡爬取的是西刺國內高匿IP。我們需要的就是這一串數字。 進群:548377875&nbs
python3 抓取西刺網免費代理IP並驗證是否可用
爬取西祠網免費高匿代理IP並驗證是否可用存到csv檔案 #匯入模組 import requests import chardet import random from scrapy.selector import Selecto
從西刺代理爬取代理ip,並驗證是否可用
最近又重新拾起了久違的爬蟲,寫了一個代理ip的爬取,驗證和儲存器。 1.爬取網站是西刺代理,使用了requests+beautifulsoup庫 2.驗證的網站使用了京東和淘寶的首頁,用了urllib+beautifulsoup庫 3.將爬取後的程式碼存入本地的資料庫中,
Python爬取代理IP
safari () get ons too user import tool com 環境Python3.6#!/usr/bin/env python #-*-coding=utf-8 -*- #AUTHOR:duwentao import requests impo
python爬蟲爬取代理ip
最近想玩玩代理IP的刷東西怎麼實現的,所以來試試(生計所迫) 這個是西刺免費代理IP http://www.xicidaili.com/ 不能保證都能用,所以爬取下來需要檢驗,用爬取的代理ip訪問網站,看狀態碼,是200就證明能用 儲存到MongoDB
為反反爬蟲,打造一個自己的IP池?Python獲取西刺代理IP並驗證!
胡蘿蔔醬最近在爬取知乎使用者資料,然而爬取不了一會,IP就被封了,所以去爬取了西刺代理IP來使用。 這裡爬取的是西刺國內高匿IP。我們需要的就是這一串數字。 分
爬取代理IP
現在爬蟲好難做啊,有些網站直接封IP,本人小白一個,還沒錢,只能找免費的代理IP,於是去爬了西刺免費代理,結果技術值太低,程式還沒除錯好, IP又被封了。。。 IP又被封了。。。 IP又被封了。。。 於是又開始找其他的免費代理,找到了89免費代理,這個網站提供了API介面。在我除錯過程中發現,這個API介
python3爬蟲 -----爬取大學資訊並通過matplotlib與numpy繪製結果-----from最好大學網
爬取大學資訊並 通過matplotlib與numpy繪製多指標柱形圖 就某一因素繪製餅圖並突出其中一個物件(本例中為江西理工大學) 1 # -*- coding:utf-8 -*- 2 # author:zxy 3 # date:2018-12-24 4 # upda
python3 爬蟲爬取深圳公租房輪候庫(深圳房網)
深圳公租房輪候庫已經朝著幾十萬人的規模前進了,這是截至16年10月之前的資料了,貼上來大家體會下 所以17年已更新妥妥的10W+ 今天就拿這個作為爬蟲的練手專案 1、環境準備: 作業系統:win10 python版本:python3.5.3 開發工具:sublime 3 python需要安裝的庫:
考研大資料爬取與分析工具V0.0.0 (發行日期2018.09.02)
產品下載: 考研大資料爬取與分析工具V0.0.0(本版本爬取與分析研招網18年的13.82萬個招生詳情網頁無問題,後續19、20等的招生資料爬取工作我會跟進)下載地址: 考研大資料分析報表V0.0.0(基於研招網18年的13.82萬個招生詳情網頁,18年的180個學科
【DP】ssl 1010 方格取數(多執行緒DP)
Description 設有N*N的方格圖(N<=10,我們將其中的某些方格中填入正整數,而其他的方格中則放入數字0。如下圖所示(見樣例): 某人從圖的左上角的A 點出發,可以向下行走,也可以向右走,直到到達右下角的B點。在走過的路上,他可以取走方格中的數(取走後的方格中將變
TCP/IP網路程式設計 基於Linux程式設計_4 --多執行緒伺服器端的實現
執行緒基本概念 前面我們講過多程序伺服器,但我們知道它開銷很大,因此我們才引入執行緒,我們可以把它看成是一種輕量級程序。它相比程序有如下幾個優點: 執行緒的建立和上下文切換開銷更小且速度更快。 執行緒間交換資料時無需特殊技術。 程序:在作業系統構成
(無顯示器,無網線,無路由)使用筆記本實現ssh遠端登入樹莓派3b+,並登入遠端桌面(附OpenCV安裝教程推薦)
新增前言: 這篇文章屬於此係列: 一個用樹莓派做的會聊天,能人臉識別(支援雲臺追蹤)和傳送郵件的小玩具 前言: 我正在做一個樹莓派(RaspberryPi)+人臉識別+語音識別的專案。人臉識別打算使用face_recognition這個為Python提供的庫;語音
python爬蟲建立代理池,爬取5000個代理IP並進行驗證!
前面已經介紹了urllib+正則表示式和BeautifulSoup進行爬取資料的方法,今天再解決一個實際問題——構建自己的代理池。 通過爬蟲在網上進行資料的獲取,由於效率很快,換言之,訪問的速度過快,導致一段時間內的流量過大,會使得對方的伺服器壓力過
Python3網路爬蟲:requests+mongodb+wordcloud 爬取豆瓣影評並生成詞雲
Python版本: python3.+ 執行環境: Mac OS IDE: pycharm 一 前言 二 豆瓣網影評爬取 網頁分析 程式碼編寫 三 資料庫實裝 四
【爬蟲】002 python3 +beautifulsoup4 +requests 爬取靜態頁面
bgcolor img err 預覽 政府 bold 技術 貴的 頁面元素 實驗環境: win7 python3.5 bs4 0.0.1 requests 2.19 實驗日期:2018-08-07 爬取網站:http://www.xhsd.cn/ 現在的網站大多有復雜
Python3.5+requests 爬取網站遇到中文亂碼怎麼辦?ä½è ï¼å¾®è½¯äºæ´²ç 究é¢
import requests from bs4 import BeautifulSoup url = 'http://quote.eastmoney.com/stocklist.html' user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Wind
python3爬取qq音樂並下載 Python 爬取qqmusic音樂url並批量下載
本文參考Python 爬取qqmusic音樂url並批量下載 同學找我爬取一下qq音樂播放連結,包括歌詞等資訊打包成json,試了一下可以爬取。 一、找到qq音樂播放的url 1.找到搜尋頁面返回的資料包 歌曲最終的播放連結時經過多次拼接的,首先找到qq音樂搜尋歌曲介面,https://y.qq.