做業(yè)務(wù)員找數(shù)據(jù)的網(wǎng)站網(wǎng)絡(luò)推廣app是違法的嗎
文章目錄
- 🍔準(zhǔn)備工作
- 🌹BeautifulSoup()
- ?代碼實(shí)現(xiàn)
- ?打印標(biāo)簽里面的內(nèi)容
- ?快速拿到一個(gè)標(biāo)簽里的屬性
- ?打印整個(gè)文檔
- 🎆獲取特定標(biāo)簽的特定內(nèi)容
- 🌹查找標(biāo)簽
- 🎈在文檔查找標(biāo)簽 find_all
- 🎈正則表達(dá)式搜索
- 🌹查找參數(shù)
- 🌹文本(text)參數(shù)
- 🌹limit參數(shù)
- 🛸通過標(biāo)簽來查找 select
- 🛸通過類名來查找
- 🛸通過id來查找

🍔準(zhǔn)備工作
我們運(yùn)行下面的代碼,爬取一下百度網(wǎng)站
import urllib.requesturl = "https://www.baidu.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36"
}
req = urllib.request.Request(url=url, headers=headers)
reponse = urllib.request.urlopen(req)
print(reponse.read().decode("utf-8"))
創(chuàng)建一個(gè)file,后綴為html,把爬取的代碼粘貼過去
🌹BeautifulSoup()
BeautifulSoup 是一個(gè)用于解析 HTML 和 XML 文檔的 Python 庫。它提供了一種簡(jiǎn)單而靈活的方式,幫助開發(fā)者從網(wǎng)頁中提取所需的數(shù)據(jù)
使用 BeautifulSoup,你可以將 HTML 或 XML 文檔加載到解析樹中,并使用類似于 DOM(文檔對(duì)象模型)的方式來遍歷和搜索文檔的結(jié)構(gòu)。然后,你可以使用各種方法和屬性來定位、提取和操作文檔中的元素和數(shù)據(jù)。
以下是 BeautifulSoup 的一些常見用途:
- 解析和提取數(shù)據(jù):通過加載 HTML 或 XML 文檔,BeautifulSoup 可以幫助你輕松地提取出所需的數(shù)據(jù)。你可以使用 CSS 選擇器或類似于字典的屬性訪問方式來定位元素,并獲取其文本內(nèi)容、屬性值等。
- 數(shù)據(jù)清洗和轉(zhuǎn)換:BeautifulSoup 提供了諸多方法來處理解析樹中的元素和數(shù)據(jù)。你可以刪除、替換或修改特定的標(biāo)簽、屬性,也可以對(duì)文本內(nèi)容進(jìn)行處理,如去除空白字符、標(biāo)準(zhǔn)化格式等。
- 網(wǎng)頁爬蟲:在網(wǎng)絡(luò)爬蟲中,你可以使用 BeautifulSoup 來解析抓取到的網(wǎng)頁內(nèi)容,提取出需要的數(shù)據(jù),如標(biāo)題、鏈接、圖像等。它可以幫助你處理網(wǎng)頁中的復(fù)雜結(jié)構(gòu),并提供便捷的 API 進(jìn)行數(shù)據(jù)提取和處理。
- 數(shù)據(jù)可視化和分析:BeautifulSoup 可以與其他數(shù)據(jù)處理和可視化庫(如 Pandas、Matplotlib)結(jié)合使用,進(jìn)一步分析和展示提取到的數(shù)據(jù)。你可以將數(shù)據(jù)轉(zhuǎn)換為數(shù)據(jù)框架、繪制圖表或進(jìn)行其他分析操作。
總的來說,BeautifulSoup 是一個(gè)功能強(qiáng)大且易于使用的工具,用于解析和處理 HTML、XML 等文檔,并從中提取所需的數(shù)據(jù)。它在數(shù)據(jù)爬取、數(shù)據(jù)清洗和轉(zhuǎn)換等領(lǐng)域都有廣泛的應(yīng)用。
?代碼實(shí)現(xiàn)
from bs4 import BeautifulSoupfile = open("./baidu.html","rb")
html=file.read()# 解析的是html文件
# 解析器是html.parser
bs=BeautifulSoup(html,"html.parser")print(bs.title)
運(yùn)行后發(fā)現(xiàn)
運(yùn)行結(jié)果提取出了title
同理
?打印標(biāo)簽里面的內(nèi)容
print(bs.title.string)
?快速拿到一個(gè)標(biāo)簽里的屬性
print(bs.a.attrs)
?打印整個(gè)文檔
print(bs)
🎆獲取特定標(biāo)簽的特定內(nèi)容
print(bs.head.contents[1])
🌹查找標(biāo)簽
🎈在文檔查找標(biāo)簽 find_all
查找標(biāo)簽
搜索到的僅僅是那一種標(biāo)簽
t_list=bs.find_all("span")
把所有的 某個(gè)標(biāo)簽 放到列表里面
🎈正則表達(dá)式搜索
需要引入庫
import re
搜索出來的是包含 某個(gè)標(biāo)簽 的
我們查找a標(biāo)簽,head標(biāo)簽里面有a這個(gè) 字母,所以被選出來了
由于link標(biāo)簽里面的鏈接中有a字母,所以link標(biāo)簽也被選出來了
🌹查找參數(shù)
比如下面這種
🌹文本(text)參數(shù)
🌹limit參數(shù)
限制獲取到的個(gè)數(shù)
🛸通過標(biāo)簽來查找 select
🛸通過類名來查找
🛸通過id來查找