python網路資料採集學習筆記(三)

2021-09-13 14:45:10 字數 2937 閱讀 6466

第二篇學習筆記的鏈結為:

這一篇是接上次關於第二章的學習

先來看下面**1:

from urllib.request import urlopen

from bs4 import beautifulsoup

html = urlopen(

"")bsobj = beautifulsoup(html,

"html.parser"

)for sibling in bsobj.find(

"table",)

.tr.next_siblings:

print

(sibling)

這段**會列印產品列表裡的所有行的產品,第一行**標題除外。beautifulsoup 的next_siblings()函式,只呼叫後面的兄弟標籤。例如,如果我們選擇一組標籤中位於中間位置的乙個標籤,然後用 next_siblings() 函式,那麼它就只會返回在它後面的兄弟標籤。因此,選擇標籤行然後調next_siblings,可以選擇**中除了標題行以外的所有行。和 next_siblings 一樣,如果你很容易找到一組兄弟標籤中的最後乙個標籤,那麼previous_siblings函式也會很有用。當然,還有 next_sibling 和 previous_sibling 函式,與next_siblingsprevious_siblings的作用類似,只是它們返回的是單個標籤,而不是一組標籤。

父標籤處理-**2:

from urllib.request import urlopen

from bs4 import beautifulsoup

html = urlopen(

"")bsobj = beautifulsoup(html,

"html.parser"

)print

(bsobj.find(

"img",)

.parent.previous_sibling.get_text(

))

輸出結果為:$15.00。即…/img/gifts/img1.jpg 這個對應商品的**。

實現過程:

(1) 選擇標籤 src="…/img/gifts/img1.jpg";

(2) 選擇標籤的父標籤(在示例中是 標籤);

(3) 選擇 標籤的前乙個兄弟標籤 previous_sibling(在示例中是包含美元**的 標籤);

(4) 選擇標籤中的文字,「$15.00」。

正規表示式常用符號表:

識別郵箱位址的正規表示式:

把上面的規則連線起來,就獲得了完整的正規表示式:

[a-za-z0-9._+]+@[a-za-z]+.(com|org|edu|net)

from urllib.request import urlopen

from bs4 import beautifulsoup

import re

html = urlopen(

"")bsobj = beautifulsoup(html,

"html.parser"

)images = bsobj.findall(

"img",)

for image in images:

print

(image[

"src"

])

輸出結果為:

這段**列印的式的相對路徑,都是以 …/img/gifts/img 開頭,以 .jpg 結尾。正規表示式可以作為 beautifulsoup 語句的任意乙個引數,讓你的目標元素查詢工作極具靈活性。

對於乙個標籤物件,可以用下面的**獲取它的全部屬性:mytag.attrs。

要注意這行**返回的是乙個 python 字典物件,可以獲取和操作這些屬性。比如要獲取的資源位置 src,可以用:myimgtag.attrs[「src」]

lambda 表示式本質上就是乙個函式,可以作為其他函式的變數使用;也就是說,乙個函式不是定義成 f(x, y),而是定義成 f(g(x), y),或 f(g(x), h(x)) 的形式。

beautifulsoup 允許我們把特定函式型別當作 findall 函式的引數。唯一的限制條件是這些函式必須把乙個標籤作為引數且返回結果是布林型別。beautifulsoup 用這個函式來評估它遇到的每個標籤物件,最後把評估結果為「真」的標籤保留,把其他標籤剔除。

例如,下面的**就是獲取有兩個屬性的標籤:

soup.findall(

lambda tag:

len(tag.attrs)==2

)

這行**會找出下面的標籤:

class

="body"

id="content"

>

div>

style

="color

:red

" class

="title"

>

span

>

Python網路資料採集

from urllib.request import urlopen from bs4 import beautifulsoup import re pages set defgetlinks pageurl global pages html urlopen pageurl bsobj beaut...

Python網路資料採集

本書適合熟悉python的程式設計師 安全專業人士 網路管理員閱讀。書中不僅介紹了網路資料採集的基本原理,還深入 了更高階的主題,比如分析原始資料 用網路爬蟲測試 等。此外,書中還提供了詳細的 示例,以幫助你更好地理解書中的內容。這本書中的工具和示例幫我輕鬆地將一些重複性工作自動化了,我可以將省下來...

Python網路資料採集學習筆記1

使用的python版本python3.5,解析的庫是beautifulsoup lxml。如果系統中的python只有乙個版本,安裝好python控制包pip,然後安裝依賴包 安裝方式為 pip install beautifulsoup lxml如果系統中存在兩種版本的python,那麼安裝命令為...