爬蟲學習(十一) bs4基礎學習

2022-08-03 01:36:11 字數 2173 閱讀 9968

bs4是第三方提供的庫,可以將網頁生成乙個物件,這個網頁物件有一些函式和屬性,可以快捷的獲取網頁中的內容和標籤

lxml是乙個檔案的直譯器,python自帶的直譯器是:html.parser

import re

from bs4 import beautifulsoup

# 把網頁生成物件的物件拿出來

soup = beautifulsoup(open("test.html",encoding="utf8"),"lxml")

# __str__此方法作用:列印物件會把對應的字串列印出來

# print(soup)

# 列印出來的結果是網頁的標籤的字串

#方式一. 根據標籤進行查詢,只能知道第乙個標籤

ret = soup.a

print(ret)

# 輸出結果:是網頁中的第乙個標籤及其裡邊內容,返回的是乙個標籤物件

# 2.獲取屬性和內容

print(soup.a.attrs)

# 獲取a標籤中的屬性,返回的是乙個關於屬性和屬性值的字典,可以根據鍵值形式拿取屬性值

print(soup.a["href"])

# 可以如此直接獲取屬性的值

print(soup.a.text)

print(soup.a.string)

print(soup.a.get_text())

# 可以獲取標籤中的內容

# 注意:如果標籤中還有標籤,怎獲取標籤內容是獲取所有標籤中的內容

print(soup.div.text.replace("\t","").replace("\n",""))

# 輸出內容是:將製表符,換行符替換為空字串

# 方式二,比第二種方式更加靈活,可以加(屬性限制)條件,找到指定的標籤

# 返回的是乙個a標籤的物件

tag = soup.find("a",class_="mu")

print(tag)

# 輸出內容為a標籤物件。

# 注意:再根據class類進行索引標籤時,要寫成class_形式,不能寫成class

# 原因是class在python**中是關鍵字,檢索時防止**錯誤識別!

tag1 = soup.find("a",class_= re.compile(r"^mu"))

print(tag1)

# 注意可以進行加正規表示式對標籤進行篩選

print(soup.find_all("a") )

#同find()一樣拿取所有的a標籤,返回的是乙個含a標籤物件的列表

# 方式三,(重點)soup.select(),返回的是乙個關於標籤物件的列表

# 適用於css的樣式選擇器

tagre = soup.select(".mu")

# 使用選擇器進行標籤的篩選

print("*"*50)

print(tagre)

# 獲取標籤屬性的值

print(tagre[0]["href"])

# 適用選擇器種類

# 標籤選擇器

# 屬性選擇器

# id選擇器

# class類選擇器

# 層級選擇器

# 偽類選擇器

# 組合選擇器

# 層級選擇器(重點)

# div p a 後邊的節點是前邊節點的子節點就可以

print(soup.select(".tang #nan"))

# div>p>span 後邊的節點是前邊節點的直接子節點就可以

print(soup.select(".tang>ul>li"))

#屬性選擇器(幾乎不用)

print(soup.select("a[class=mu]"))

# 彩蛋:方式二和方式三組合使用

# 如:

c_soup = beautifulsoup(open("test.html",encoding="utf8"),"lxml")

tag1 = c_soup.find("div",class_="tang")

print("*"*50)

print(tag1.select(".tang a"))

爬蟲架構 bs4

方便解析html xml等格式的原始碼,快速查詢 修改等操作,節省數小時乃至更多的工作時間 官網文件 from bs4 import beautifulsoup print path beautifulsoup path 非真實網頁 html doc 夏日炎炎,要你幹嘛 print soup.hea...

爬蟲 bs4模組

安裝 pip3 install beautifulsoup4 解析html和xml,修改html和xmlimport requests from bs4 import beautifulsoup 文件容錯能力,不是乙個標準的html也能解析 soup beautifulsoup html doc,l...

python爬蟲學習(十)bs4解析資料

lxml安裝是個坑 coding utf 8 import lxml import requests from bs4 import beautifulsoup if name main ua偽裝 將對應的user agent封裝到字典中 headers url 對指定url發起請求,對應的url是...