Python 爬蟲之旅3 用pq獲取列表中的資料

2021-08-21 21:28:04 字數 1750 閱讀 3315

當我們成功獲取到某**的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.從商業角度來說,爬蟲能實現巨大的商業價值。網路爬蟲根據系統結構和開發技術大致可以分為四種型別 通用網路爬蟲 聚焦網路爬...