首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

從購書網站抓取圖書信息:Python Scrapy 爬蟲框架快速上手

     編輯:程式設計綜合問答

工具選型

  • Scrapy:專業異步爬蟲框架,支持選擇器、中間件、管道、分佈式擴展。
  • Requests + BeautifulSoup/lxml:簡單頁面、一次性腳本。
  • Selenium/Playwright:需渲染 JS、模擬登錄的複雜站點。

Scrapy 最小項目

# 安裝
pip install scrapy

# 創建項目
scrapy startproject bookspider
cd bookspider

# 生成 Spider
scrapy genspider books example.com

核心代碼

# bookspider/spiders/books.py
import scrapy
import re

class BooksSpider(scrapy.Spider):
    name = 'books'
    start_urls = ['https://example.com/category/programming']

    def parse(self, response):
        for book in response.css('div.book-item'):
            yield {
                'title': book.css('h3 a::attr(title)').get(),
                'price': book.css('.price::text').re_first(r'[\d.]+'),
                'rating': book.css('.star-rating::attr(class)').re_first(r'(\d)'),
                'url': response.urljoin(book.css('h3 a::attr(href)').get()),
            }

        # 翻頁
        next_page = response.css('li.next a::attr(href)').get()
        if next_page:
            yield response.follow(next_page, self.parse)

運行與導出

scrapy crawl books -o books.json   # JSON
scrapy crawl books -o books.csv    # CSV
scrapy crawl books -o books.jsonl  # JSON Lines

進階建議

  • 設置 DOWNLOAD_DELAY、CONCURRENT_REQUESTS 禮貌爬取。
  • 使用 Item Pipeline 寫入 MySQL/MongoDB/Elasticsearch。
  • 反爬應對:隨機 User-Agent、代理 IP 池、Cookie 池、驗證碼識別服務。
  • 部署:scrapyd + scrapyd-client 或 Docker + Kubernetes。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved