最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Scrapling進行網(wǎng)頁采集的用法詳解

 更新時間:2026年05月20日 09:28:03   作者:楓葉v.  
Scrapling是一個Python Web Scraping框架,支持靜態(tài)網(wǎng)頁、動態(tài) 網(wǎng)頁抓取及多頁面爬蟲,它結合了requests、BeautifulSoup、Scrapy、Playwright的優(yōu)點,API簡潔統(tǒng)一,適用于快速原型、簡單的網(wǎng)頁抓取,本文給大家介紹了Scrapling的使用指南,需要的朋友可以參考下

Scrapling 是一個 Python Web Scraping 框架,可以用來抓取靜態(tài)網(wǎng)頁、動態(tài) 網(wǎng)頁,也可以編寫多頁面爬蟲。它的 API 風格有點像 requests + BeautifulSoup + Scrapy + Playwright 的結合體。

項目地址:D4Vinci/Scrapling
官方文檔:Scrapling Docs

適合什么場景

Scrapling 主要適合這些任務:

  • 抓取普通 HTML 頁面
  • 使用 CSS / XPath 提取網(wǎng)頁內容
  • 抓取 JavaScript 渲染后的頁面
  • 編寫多頁面爬蟲
  • 處理分頁、詳情頁、表格、商品列表等結構化數(shù)據(jù)
  • 使用瀏覽器模式處理更復雜的網(wǎng)站

簡單來說:

普通網(wǎng)頁:Fetcher
動態(tài) 網(wǎng)頁:DynamicFetcher
復雜保護頁面:StealthyFetcher
多頁面爬蟲:Spider

安裝

Scrapling 要求 Python 3.10+。

基礎安裝:

pip install scrapling

如果需要抓取 JavaScript 渲染頁面,需要安裝 fetchers 依賴:

pip install "scrapling[fetchers]"
scrapling install

Demo 1:抓取普通網(wǎng)頁

from scrapling.fetchers import Fetcher

page = Fetcher.get("https://quotes.toscrape.com/")

for quote in page.css(".quote"):
    text = quote.css(".text::text").get()
    author = quote.css(".author::text").get()

    print({
        "text": text,
        "author": author,
    })

這里的選擇器和 Scrapy 很像:

page.css("h1::text").get()
page.css("a::attr(href)").getall()
page.xpath("http://h1/text()").get()

Demo 2:抓取分頁

from scrapling.fetchers import Fetcher

url = "https://quotes.toscrape.com/"

while url:
    page = Fetcher.get(url)

    for quote in page.css(".quote"):
        print({
            "text": quote.css(".text::text").get(),
            "author": quote.css(".author::text").get(),
        })

    next_href = page.css(".next a::attr(href)").get()
    url = page.urljoin(next_href) if next_href else None

page.urljoin() 可以把相對鏈接轉換成完整 URL。

Demo 3:抓取商品列表

from scrapling.fetchers import Fetcher

page = Fetcher.get("https://books.toscrape.com/")

books = []

for item in page.css("article.product_pod"):
    books.append({
        "title": item.css("h3 a::attr(title)").get(),
        "price": item.css(".price_color::text").get(),
        "stock": item.css(".availability::text").getall()[-1].strip(),
        "url": page.urljoin(item.css("h3 a::attr(href)").get()),
    })

print(books)

Demo 4:用文本和正則查找元素

from scrapling.fetchers import Fetcher

page = Fetcher.get("https://books.toscrape.com/index.html")

book = page.find_by_text("Tipping the Velvet")
print(book.text)
print(page.urljoin(book.attrib["href"]))

price = page.find_by_regex(r"£[\d\.]+")
print(price.text)

這類 API 適合快速定位頁面里的文字內容,不一定每次都要手寫復雜 CSS 選擇器。

Demo 5:抓取 JavaScript 動態(tài)頁面

from scrapling.fetchers import DynamicFetcher

page = DynamicFetcher.fetch(
    "https://quotes.toscrape.com/js/",
    headless=True,
    network_idle=True,
)

for quote in page.css(".quote"):
    print({
        "text": quote.css(".text::text").get(),
        "author": quote.css(".author::text").get(),
    })

如果頁面內容是前端 JS 渲染出來的,普通 Fetcher 可能抓不到,這時可以使用 DynamicFetcher

Demo 6:等待元素出現(xiàn)

from scrapling.fetchers import DynamicFetcher

page = DynamicFetcher.fetch(
    "https://quotes.toscrape.com/js-delayed/",
    headless=True,
    wait_selector=".quote",
    wait_selector_state="visible",
)

quotes = page.css(".quote .text::text").getall()
print(quotes)

這個寫法適合頁面加載較慢、需要等待某個元素出現(xiàn)的情況。

Demo 7:寫一個 Spider

如果要做正式爬蟲,推薦用 Spider。

from scrapling.spiders import Spider, Response

class QuotesSpider(Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com/"]
    concurrent_requests = 5

    async def parse(self, response: Response):
        for quote in response.css(".quote"):
            yield {
                "text": quote.css(".text::text").get(""),
                "author": quote.css(".author::text").get(""),
                "tags": quote.css(".tag::text").getall(),
            }

        next_page = response.css(".next a::attr(href)").get()
        if next_page:
            yield response.follow(next_page, callback=self.parse)

result = QuotesSpider().start()

print(f"抓到 {len(result.items)} 條")
result.items.to_json("quotes.json")

Spider 的結構比較清晰:

name:爬蟲名稱
start_urls:起始頁面
parse:解析響應,yield 數(shù)據(jù)或新請求
response.follow:繼續(xù)跟進下一頁

Fetcher、DynamicFetcher、Spider 怎么選

場景推薦
普通 HTML 頁面Fetcher
需要 cookie / sessionFetcherSession
JS 渲染頁面DynamicFetcher
需要瀏覽器操作DynamicFetcher + page_action
多頁面爬蟲Spider
更復雜的反爬頁面StealthyFetcher

小結

Scrapling 的優(yōu)點是 API 比較統(tǒng)一:無論是普通請求、動態(tài)頁面,還是 Spider 爬蟲,最終拿到的頁面對象都可以用類似的方式解析:

page.css(...)
page.xpath(...)
page.find_by_text(...)
page.find_by_regex(...)

如果你之前用過 requestsBeautifulSoup、ScrapyPlaywright,Scrapling 上手會比較快。

它適合從小腳本逐步升級到正式爬蟲項目:一開始可以用 Fetcher.get() 寫簡單 demo,后面再改成 Spider 做分頁、并發(fā)和數(shù)據(jù)導出。

注意事項

使用 Scrapling 抓取網(wǎng)站時,需要遵守目標網(wǎng)站的服務條款、robots.txt 和相關法律法規(guī)。建議優(yōu)先抓取公開、允許訪問的數(shù)據(jù),并控制請求頻率,避免對目標網(wǎng)站造成壓力。

以上就是Python使用Scrapling進行網(wǎng)頁采集的用法詳解的詳細內容,更多關于Python Scrapling網(wǎng)頁采集的資料請關注腳本之家其它相關文章!

相關文章

  • 一小時學會TensorFlow2之基本操作2實例代碼

    一小時學會TensorFlow2之基本操作2實例代碼

    這篇文章主要介紹了TensorFlow2的基本操作和實例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • python使用openpyxl庫修改excel表格數(shù)據(jù)方法

    python使用openpyxl庫修改excel表格數(shù)據(jù)方法

    今天小編就為大家分享一篇python使用openpyxl庫修改excel表格數(shù)據(jù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 使用Qt?QSS繪制簡單美化界面功能

    使用Qt?QSS繪制簡單美化界面功能

    這篇文章主要介紹了使用Qt?QSS繪制簡單美化界面,本文以繪制登錄界面為例,創(chuàng)建一個繼承自Qwidget的設計師界面類,為了使得控件排放整齊有序,可以使用layout布局進行輔助,感興趣的朋友跟隨小編一起看看吧
    2022-10-10
  • python加載自定義詞典實例

    python加載自定義詞典實例

    今天小編就為大家分享一篇python加載自定義詞典實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python實現(xiàn)識別圖像中人物的示例代碼

    Python實現(xiàn)識別圖像中人物的示例代碼

    這篇文章主要介紹了通過face_recognition提供的demo代碼,簡單調整了一下,從而實現(xiàn)識別圖像中人物的功能,感興趣的可以跟隨小編一起試試
    2022-01-01
  • 通過Python實現(xiàn)控制手機詳解

    通過Python實現(xiàn)控制手機詳解

    如今python是非常多人學習的,而手機也幾乎人手一部。對于很多Python學習者,想用python來完成android手機中各種炫酷的的控制,adb是必不可缺少的工具之一
    2021-10-10
  • Python圖像處理庫PIL的ImageDraw模塊介紹詳解

    Python圖像處理庫PIL的ImageDraw模塊介紹詳解

    這篇文章主要介紹了Python圖像處理庫PIL的ImageDraw模塊介紹詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • pytorch DataLoader的num_workers參數(shù)與設置大小詳解

    pytorch DataLoader的num_workers參數(shù)與設置大小詳解

    這篇文章主要介紹了pytorch DataLoader的num_workers參數(shù)與設置大小詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 一文分享9個Python自動化辦公提效腳本

    一文分享9個Python自動化辦公提效腳本

    這篇文章主要為大家詳細介紹了9個Python自動化辦公提效腳本,這些腳本涵蓋了視頻處理、文本分析、文件管理、打印任務和圖像處理等常見辦公場景,能顯著提高工作效率
    2026-01-01
  • Python實現(xiàn)字符串匹配的KMP算法

    Python實現(xiàn)字符串匹配的KMP算法

    KMP算法的關鍵是利用匹配失敗后的信息,盡量減少模式串與主串的匹配次數(shù)以達到快速匹配的目的。這篇文章主要介紹了Python實現(xiàn)字符串匹配的KMP算法,需要的朋友可以參考下
    2019-04-04

最新評論

灵台县| 左权县| 保山市| 商河县| 嘉祥县| 青海省| 香河县| 通辽市| 兴山县| 平罗县| 道孚县| 赣州市| 黄陵县| 都匀市| 宝清县| 宣城市| 拜泉县| 江阴市| 宜都市| SHOW| 聂拉木县| 五莲县| 利津县| 甘泉县| 乌恰县| 得荣县| 姚安县| 新巴尔虎右旗| 灵台县| 砀山县| 东宁县| 冀州市| 西安市| 昂仁县| 腾冲县| 新邵县| 桃园市| 遂宁市| 周口市| 凉山| 大方县|