生成一个scrapy案例
时间: 2024-05-03 11:21:32 浏览: 150
一个简单的scrapy示例
5星 · 资源好评率100%
以下是一个简单的Scrapy案例,用于获取Amazon网站上的书籍信息:
1. 创建一个Scrapy项目
使用Scrapy命令行工具创建一个新的Scrapy项目:
```
scrapy startproject amazon_books
```
这将在当前目录下创建一个名为amazon_books的新目录,其中包含Scrapy项目的必要文件和文件夹。
2. 定义Spider
在项目目录下创建一个名为spiders的新目录,然后在该目录下创建一个名为books_spider.py的Python文件。在该文件中,定义一个名为BooksSpider的Spider子类,如下所示:
```python
import scrapy
class BooksSpider(scrapy.Spider):
name = "books"
allowed_domains = ["amazon.com"]
start_urls = [
"https://www.amazon.com/b/?node=283155"
]
def parse(self, response):
# TODO: Extract book information from response
pass
```
在这个Spider中,我们定义了爬虫的名称(books)、允许爬取的域名(amazon.com)和起始URL(https://www.amazon.com/b/?node=283155)。还定义了一个名为parse的回调函数,该函数将从响应中提取图书信息。
3. 提取数据
在parse函数中,我们可以使用XPath或CSS选择器来提取我们需要的数据。例如,以下代码将提取Amazon网站上所有书籍的名称、作者、价格和评级:
```python
def parse(self, response):
books = response.xpath("//div[@class='a-section a-spacing-none']/div[@class='a-section a-spacing-micro']")
for book in books:
name = book.xpath(".//h2/a/span/text()").get()
author = book.xpath(".//div[@class='a-row a-size-base a-color-secondary']/span[@class='a-size-base']/text()").get()
price = book.xpath(".//div[@class='a-row']/a/span[@class='a-price']/span[@class='a-offscreen']/text()").get()
rating = book.xpath(".//div[@class='a-row']/a/i/span[@class='a-icon-alt']/text()").get()
yield {
'name': name,
'author': author,
'price': price,
'rating': rating
}
```
在这里,我们使用XPath选择器从响应中提取每本书的名称、作者、价格和评级,并将它们作为字典返回。Scrapy将自动将这些字典转换为JSON格式,并将它们写入输出文件。
4. 运行爬虫
最后,我们可以使用Scrapy命令行工具来运行我们的爬虫:
```
scrapy crawl books -o books.json
```
这将启动我们的爬虫,并将提取的书籍信息写入名为books.json的文件中。
阅读全文