當我們成功獲取到某**的html頁面後,就要找到我們想要的資料的位置並把所需資料儲存下來。
首先檢視網頁源**,找到我們所需資料的列表,然後把有唯一性的包含住這個列表的字串找到作為我們匹配的模式。
strpattern = r'(?<=).+?(?=)'
pt = re.compile(strpattern, re.s)
mch1 = re.search(pt, strhtml)
上面的strpattern是我列舉的匹配模式,意思就是找到?<=後的字串和?=後的字串之間的字元,確定好模式我們對此模式進行編譯,然後在我們得到的strhtml裡查詢符合此模式的字元即可,這樣我們就得到了包含所需資料的html。
if mch1 != none:
print(pq(mch1.group(0)[1:])('tr'))
接下來就是pq的用法了
pq(mch1.group(0)) #接正規表示式後的統一寫法其他的操作就根據我們的資料格式來寫,如下圖
我們開啟乙個房產的專案資訊,找到要獲取的資料的位置,分析它的結構:一行是乙個tr,乙個tr裡有兩個td,分析好這些我們就可以用下面的方法獲取我們想要的資料了
只是找到了資料所在地方,我常用下面的幾種方法獲取我想要的資料:
遍歷每一行資料是我們最常用的操作了,就是要每乙個tr中的內容我們可以:
dom = pq(mch1.group(0))('tr') #獲取這個table中所有標籤tr
for it in dom.items(): #遍歷每乙個tr
print(it) #輸出每個tr的內容
有時候我們並不需要所有的行,比如我只想抓取這個專案的專案特點那一行,這樣我就可以用下面的方法:
dom = pq(mch1.group(0))('tr') #獲取這個table中所有標籤tr
print(pq(dom[3])) #通過下標的方法索引到特定的位置
dom = pq(mch1.group(0))('tr') #獲取這個table中所有標籤tr
print(pq(dom[3])('td:eq(1)').text()) #獲取第二個td中文字的內容
也就是對於不同位置的東西索引的方式是不一樣的,我們的dom是所有的tr標籤,我獲取某個tr使用dom[i]的方式,對於獲得的某個tr中的標籤,我們用的就是(『td:eq(j)』)獲取的。
我們要獲取的資料是不同的型別,有的是標籤中某些屬性的內容,有些是網頁中顯示的文字,這些pq中已經為我們提供了方法。
爬蟲中獲取鏈結是非常常見的,鏈結在html語言中是被放在便簽的屬性中的,如下圖我們想要的鏈結在a標籤的href屬性中
假設我們已經找到了包含這個a標籤的h4標籤所包含的記錄,可以用下述方法:
dom('a').attr('href') #獲取到鏈結
dom('a').text() #獲取到文字
python學習之旅 3
學習到的知識.num 1 等效於 num num 1 num 1 等效於 num num 1 num 1 等效於 num num 1 num 1 等效於 num num 1 num 1 等效於 num num 1 num 1 等效於 num num 1 num 1 等效於 num num 1 and...
Python爬蟲 劍指Offer題目目錄獲取
import requests 獲取請求 from bs4 import beautifulsoup as bs 解析網頁,比正規表示式好用太多了 num 1def main url session requests.session r session.get url html r.text bf ...
用python寫爬蟲(一)初識爬蟲
爬蟲又被稱之為網路蜘蛛 網路機械人等,簡單來說就是模擬客戶端傳送網路請求,接收請求響應,按照一定的規則自動的抓取網際網路資訊的程式。1.從個人角度來說,爬蟲可以做我們的生活助手。2.從商業角度來說,爬蟲能實現巨大的商業價值。網路爬蟲根據系統結構和開發技術大致可以分為四種型別 通用網路爬蟲 聚焦網路爬...