靜態網頁爬蟲

2022-10-07 13:03:05 字數 3261 閱讀 6694

我們通過 from bs4 import beautifulsoup 語句匯入 beautifulsoup,然後使用 beautifulsoup(res.text, 'html.parser') 語句將網頁源**的字串形式解析成了 beautifulsoup 物件。

建立 beautifulsoup 物件時需要傳入兩個引數,第乙個引數是要解析的 html 文字,即**源**的字串形式(res.text)。第二個引數是解析 html 的解析器,html.parser 是 python 中內建的解析器

我們通過多次呼叫 find() 或 find_all() 方法一層層地找到了我們需要的資料。你可能會問,有沒有什麼方法可以直接就找到我們需要的資料,而不用多次查詢嗎?

答案是肯定的,需要用到 css 選擇器,

在 css 選擇器中,# 代表 id,. 代表 class。比如:#login 表示 id='login' 的所有元素,.item 表示 class='item' 的所有元素。

它們也可以組合在一起,選擇同時符合條件的元素,比如:a#login表示所有 id='login' 的 a 元素,p.item 表示所有 class='item' 的 p 元素,#login.item表示所有 id='login' 且 class='item' 的元素,.item.book 表示所有 class 同時為 item 和 book 的元素。

選擇同時符合條件的元素,選擇器之間不能有空格

當兩個選擇器之間加了空格,表示子元素選擇。還是以.item .book為例,它表示選擇所有 class='item' 的元素裡面 class='book' 的元素,即巢狀在 class='item' 的元素裡面 class='book' 的元素。

這個巢狀可以是任意層級的,只要在裡面就行,不要求直接巢狀在第一層。如果只需要直接巢狀在第一層符合條件的元素,可以用 > 分隔。比如:.item > .book。

來看個例子感受一下它們的區別:

1

from bs4 import

beautifulsoup

23 html = '''45

小王子6

7追風箏的人89

'''10

11 soup = beautifulsoup(html, '

html.parser')

1213

print(soup.select('

.item.book'))

14#輸出:15

16print(soup.select('

.item .book'))

17#輸出:[小王子

, 追風箏的人]18

19print(soup.select('

.item > .book'))

20#輸出:[小王子

]

1

import

requests

2from bs4 import

beautifulsoup

34 headers =

7 res = requests.get('

', headers=headers)

8 soup = beautifulsoup(res.text, '

html.parser')

9items = soup.select('div.pl2 a')10

for i in

items:11#

提取書名

12 name = i['

title']

13#提取鏈結

14 link = i['

href']

15print(name, link)

1

import

requests

2from bs4 import

beautifulsoup

34 headers =

7 res = requests.get('

', headers=headers)

8 soup = beautifulsoup(res.text, '

html.parser')

9items = soup.find_all('div', class_='pl2')10

for i in

items:

11 tag = i.find('a'

)12#去掉空格和換行符

13 name = ''

.join(tag.text.split())

14 link = tag['

href']

15print

(name, link)16#

輸出:17

#追風箏的人

解憂雜貨店

小王子

白夜行

活著 嫌疑人x的獻身

省略餘下內容...

網頁爬蟲 靜態網頁《一》

一 通過jsoup請求獲取 網頁審查元素。eg request path document doc jsoup.connect request path get 二 檢視需要扣取資料的標籤,通過日誌輸出 doc的body。eg log.v tag,body doc.body 三 檢視列印的日誌,找到...

靜態網頁的爬蟲嘗試

去年寫的乙個簡單爬蟲,爬去全書網的盜墓筆記的部分章節,還是比較簡單的,但是現在看來還有很多小問題沒處理 鑑於只是第一次嘗試,保留下 以後看看回想思路比較合適,就不再去完善 了。import requests from bs4 import beautifulsoup class download o...

python爬蟲 2 靜態網頁抓取

獲取響應內容 import requests r requests.get print 文字編碼 r.encoding 伺服器使用的文字編碼 print 響應狀態碼 r.status code 檢測響應的狀態碼,200為成功,4xx為客戶端錯誤,5xx為伺服器錯誤響應 print 字串方式的響應體 ...