在前幾周的grep/sed/awk實戰中提到,「和coresite - any2 california接入商建立網路bgp鄰居關係。從peeringdb上找到了所有接入商的資訊,但是轉移資訊到本地不是很方便,需要進行多次文字調整,耗時較長。作為萌新,立馬就想到近期學習的grep/sed/awk工具。於是就嘗試處理資料。」因為當時是剛學習了linux正則的這三個工具,就立馬利用了起來,權當練手。在文末也曾提到所有的操作其實都可以通過python完成。
恰巧近幾天,又學習了python抓取頁面提取資訊的一些知識。因此,就同樣的內容,再次以python的方式去處理。
▎元素樣本:
zenlayer inc
21859
206.72.210.119
none
20gopen
▎處理思路:
▎簡易版指令碼:#/usr/bin/env python
import requests,bs4
headers=
url=''
peering=requests.get(url,headers=headers)
peering.raise_for_status()
peers=bs4.beautifulsoup(peering.text[:],'html.parser')
elempeer=peers.select('.peer a')
elemasn=peers.select('.asn')
elemip4=peers.select('.ip4')
elemspeed=peers.select('.speed')
elempolicy=peers.select('.policy')
if __name__=='__main__':
for i in range(len(elempeer)):
print(elempeer[i].gettext()+'*'+elemasn[i].gettext()+'*'+elemip4[i].gettext()+'*'+elemspeed[i].gettext()+'*'+elempolicy[i].gettext())
作為簡易版,這裡沒有做任何的異常處理,也沒有對各個元素的list進行長度比較。這部分在後期可以考慮加上。**相關的解釋參見學習筆記,主要運用了requests和beautifulsoup兩個模組。需要解釋的是,elempeer這個變數在處理的時候,因為「class="peer"」內還有一行「zenlayer inc」,因此還需要加上「a」元素精確定位抓取。
▎執行效果:
由於測試系統為centos 7,不支援excel,因此這裡不使用openpyxl模組匯入excel檔案裡這個功能。暫時改為手動處理。
對比此文和前次利用grep/sed/awk處理的兩種方式,可以發現python版的處理方式更為簡潔,人工處理的部分更少。由此,可以看到python在處理大資料資訊上的優勢。
Python 爬取網頁資訊
對於本次學習爬蟲中的一些總結 1.要熟練掌握基礎知識,包括一些基礎的語法 2.正規表示式的正確使用,建議學習北理工的python爬蟲課程 3.先寫大框架再新增小的功能解析 4.對程式異常處理要熟練,盡量使用try.excep結構 5.對於列表字串資料的基本使用到位,比如增刪改查等 6.思路必須清晰 ...
python 網頁抓取資訊
目標 從下面這個網頁抓取前10頁ip 埠 運營商 位址 最後檢測時間並存入mysql資料庫 匯入需要使用到的模組 class huoqu 讀入資料 def init self self.num 1 for i in range 10 獲取網頁資訊 response requests.get i se...
python 爬蟲實現網頁資訊抓取
首先實現關於網頁解析 讀取等操作我們要用到以下幾個模組 import urllib import urllib2 import re def test f urllib.urlopen while true firstline f.readline print firstline 我們大概要做幾件事...