# Scrapy初学者框架程序 下面是一个完整的Scrapy初学者示例程序,用于爬取书籍信息: ```python # 安装Scrapy: pip install scrapy # 创建项目: scrapy startproject bookscraper # 创建爬虫: scrapy genspider books books.toscrape.com # bookscraper/spiders/books.py import scrapy class BooksSpider(scrapy.Spider): name = 'books' # 爬虫名称 allowed_domains = ['books.toscrape.com'] # 允许的域名 start_urls = ['http://books.toscrape.com/'] # 起始URL def parse(self, response): # 提取书籍列表 for book in response.css('article.product_pod'): yield { 'title': book.css('h3 a::attr(title)').get(), 'price': book.css('div.product_price p.price_color::text').get(), 'rating': book.css('p.star-rating::attr(class)').get().split()[-1] } # 提取下一页链接并跟进 next_page = response.css('li.next a::attr(href)').get() if next_page: yield response.follow(next_page, callback=self.parse) # bookscraper/settings.py (部分重要设置) USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' ROBOTSTXT_OBEY = True # 遵守robots.txt规则 FEED_FORMAT = 'json' # 输出格式 FEED_URI = 'books.json' # 输出文件名 ``` ## 运行方式 1. 创建项目:`scrapy startproject bookscraper` 2. 进入项目目录:`cd bookscraper` 3. 生成爬虫:`scrapy genspider books books.toscrape.com` 4. 将上述代码复制到生成的spider文件中 5. 运行爬虫:`scrapy crawl books` ## 代码说明 - `parse`方法是处理响应并提取数据的核心方法 - `response.css`使用CSS选择器提取数据 - `yield`返回提取的数据或新的请求 - 爬虫会自动处理分页 ## 三条额外需要注意的逻辑点 1. 网站可能有反爬机制,需要合理设置下载延迟和User-Agent 2. 提取数据时要考虑字段可能不存在的情况,使用`.get()`比直接提取更安全 3. 分页处理时要确保URL拼接正确,`response.follow`会自动处理相对URL [2025-06-07 13:18:24 | AI写代码神器 | 602点数解答]