Python通過(guò)BeautifulSoup抓取網(wǎng)頁(yè)數(shù)據(jù)并解析
技術(shù)棧介紹
本教程使用了以下幾個(gè)關(guān)鍵技術(shù):
- asyncio:Python的異步I/O框架,用于高效處理網(wǎng)絡(luò)請(qǐng)求
- crawl4ai:一個(gè)異步網(wǎng)頁(yè)爬蟲(chóng)庫(kù)
- BeautifulSoup:流行的HTML解析庫(kù)
完整代碼解析
import asyncio
from crawl4ai import AsyncWebCrawler
from bs4 import BeautifulSoup
async def extract_div_text(html_content):
"""
從HTML內(nèi)容中提取特定樣式的div文本
參數(shù):
html_content: 網(wǎng)頁(yè)的HTML內(nèi)容
返回:
提取到的文本內(nèi)容或未找到的提示信息
"""
soup = BeautifulSoup(html_content, 'html.parser')
# 查找目標(biāo) div(根據(jù) style 屬性匹配)
target_div = soup.find('div', style=lambda
value: value and 'cursor: default;font-size: 16px;line-height: 1.8;padding: 0 19px 25px' in value)
if target_div:
# 獲取 div 內(nèi)的所有文本,并清理空白
text = target_div.get_text(separator='\n', strip=True)
return text
return "目標(biāo) div 未找到"
async def main():
"""
主函數(shù),執(zhí)行網(wǎng)頁(yè)抓取和內(nèi)容提取
"""
async with AsyncWebCrawler() as crawler:
# 抓取目標(biāo)網(wǎng)頁(yè)
result = await crawler.arun("https://www.jjwxc.net/onebook.php?novelid=2490683&chapterid=2")
if hasattr(result, 'html'):
# 提取目標(biāo)div中的文本
extracted_text = await extract_div_text(result.html)
print(extracted_text) # 打印全部字符
else:
print("未能獲取 HTML 內(nèi)容")
if __name__ == "__main__":
# 運(yùn)行異步主函數(shù)
asyncio.run(main())代碼分步講解
1. 導(dǎo)入必要的庫(kù)
import asyncio from crawl4ai import AsyncWebCrawler from bs4 import BeautifulSoup
asyncio:Python的異步I/O框架AsyncWebCrawler:來(lái)自crawl4ai的異步網(wǎng)頁(yè)爬蟲(chóng)BeautifulSoup:HTML解析庫(kù)
2. 定義提取函數(shù)
async def extract_div_text(html_content):
soup = BeautifulSoup(html_content, 'html.parser')
target_div = soup.find('div', style=lambda
value: value and 'cursor: default;font-size: 16px;line-height: 1.8;padding: 0 19px 25px' in value)
# ...其余代碼...這個(gè)函數(shù)負(fù)責(zé):
- 使用BeautifulSoup解析HTML
- 通過(guò)lambda函數(shù)查找具有特定style屬性的div元素
- 提取并清理div中的文本內(nèi)容
3. 主函數(shù)
async def main():
async with AsyncWebCrawler() as crawler:
result = await crawler.arun("目標(biāo)URL")
# ...處理結(jié)果...主函數(shù)使用異步上下文管理器創(chuàng)建爬蟲(chóng)實(shí)例,并抓取目標(biāo)網(wǎng)頁(yè)。
技術(shù)要點(diǎn)
異步編程:使用async/await語(yǔ)法提高爬蟲(chóng)效率
精確選擇器:通過(guò)style屬性的部分匹配定位目標(biāo)元素
文本清理:使用get_text()方法提取干凈文本
應(yīng)用場(chǎng)景
這種技術(shù)可用于:
- 網(wǎng)絡(luò)小說(shuō)內(nèi)容抓取
- 新聞文章提取
- 任何需要從特定HTML元素中提取文本的場(chǎng)景
注意事項(xiàng)
遵守目標(biāo)網(wǎng)站的robots.txt規(guī)則
設(shè)置適當(dāng)?shù)恼?qǐng)求間隔避免被封禁
處理可能的異常情況(網(wǎng)絡(luò)錯(cuò)誤、元素不存在等)
總結(jié)
本文展示了如何使用Python異步爬蟲(chóng)高效抓取網(wǎng)頁(yè)并提取特定內(nèi)容。異步編程可以顯著提高爬蟲(chóng)效率,而B(niǎo)eautifulSoup提供了靈活的HTML解析能力。你可以根據(jù)需要修改選擇器邏輯來(lái)適應(yīng)不同的網(wǎng)頁(yè)結(jié)構(gòu)。
到此這篇關(guān)于Python通過(guò)BeautifulSoup抓取網(wǎng)頁(yè)數(shù)據(jù)并解析的文章就介紹到這了,更多相關(guān)Python BeautifulSoup網(wǎng)頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python使用BeautifulSoup提取網(wǎng)頁(yè)數(shù)據(jù)的完整指南
- Python使用BeautifulSoup和Scrapy抓取網(wǎng)頁(yè)數(shù)據(jù)的具體教程
- Python使用BeautifulSoup抓取和解析網(wǎng)頁(yè)數(shù)據(jù)的操作方法
- Python利用BeautifulSoup解析網(wǎng)頁(yè)內(nèi)容
- Python爬蟲(chóng)之使用BeautifulSoup和Requests抓取網(wǎng)頁(yè)數(shù)據(jù)
- Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息
- python基于BeautifulSoup實(shí)現(xiàn)抓取網(wǎng)頁(yè)指定內(nèi)容的方法
相關(guān)文章
Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制
這篇文章主要介紹了Python數(shù)據(jù)分析之?Matplotlib?餅圖繪制,文章基于python的相關(guān)資料展開(kāi)詳細(xì)的餅圖繪制,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Python3使用tracemalloc實(shí)現(xiàn)追蹤mmap內(nèi)存變化
這篇文章主要為大家詳細(xì)介紹了在Python3中如何使用tracemalloc實(shí)現(xiàn)追蹤mmap內(nèi)存變化,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2023-03-03
Python 利用郵件系統(tǒng)完成遠(yuǎn)程控制電腦的實(shí)現(xiàn)(關(guān)機(jī)、重啟等)
這篇文章主要介紹了Python 利用郵件系統(tǒng)完成遠(yuǎn)程控制電腦(關(guān)機(jī)、重啟等),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
python庫(kù)構(gòu)建之pyproject.toml配置文件詳解
pyproject.toml是Python項(xiàng)目標(biāo)準(zhǔn)化配置文件,由PEP?518引入,用于定義構(gòu)建系統(tǒng)、項(xiàng)目元數(shù)據(jù)和依賴(lài)管理,它替代了傳統(tǒng)的setup.cfg文件,通過(guò)指定構(gòu)建工具如setuptools或poetry,管理項(xiàng)目依賴(lài),配置工具行為等,需要的朋友可以參考下2024-09-09
Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情
這篇文章主要介紹了Python實(shí)現(xiàn)多項(xiàng)式擬合正弦函數(shù)詳情,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08

