當我們需要從網頁中擷取一些需要的資料時,我們可以使用一些html網頁分析的函數庫來快速的擷取資料。目前有多款解析HTML網頁的第三方庫可供使用,例如lxml,beautiful soup等等。下面以lxml為例從網頁中爬取我們需要的統計資料
我希望從北京公交網站擷取北京公交的所有線路資訊,進而為後續處理做準備
首先引用requests用于向網頁發出通路請求,擷取html網頁原始資料
import requests
再引用lxml中的etree類
import lxml.etree
首先輸入我們起始的爬取位址,公交線路網頁的索引頁,以此為起點,擷取所有的線路對應的url的值
lxml.etree将html網頁按照标簽進行一層一層的劃分,形成逐漸向下生長的樹結構,我們通過檢視網頁的源代碼找到我們想要的資料在哪個标簽内,使用xpath函數提取對應标簽内的資料`
```python
import requests
import lxml.etree
def get_all_line():
url = 'http://beijing.gongjiao.com/lines_all.html'
text = requests.get(url).text
doc = lxml.etree.HTML(text)
all_lines = doc.xpath("//div[@class='list']/ul/li")
f=open("./data/"+'allline.txt','a')
print(len(all_lines))
for line in all_lines:
line_name = line.xpath("./a/text()")[0].strip()
line_url = line.xpath("./a/@href")[0]
f.write(line_name+'$$'+line_url+'\n')
f.close()
這樣我們獲得了所有線路對應的url,在此基礎上再依次爬取每一個線路網頁的相關資料
在爬取線路資料之前,我們需要先建立字典用于儲存不同字段的資料,便于管理。根據需要,我建立了一個13個字段的字典