``` 使用Scrapy从爬虫练习网站 http://quotes.toscrape.com/page/1/ 开始爬取5页名言信息。 以JSON (lines)格式保存以下信息: - 内容 - 作者 - 标签 ```
时间: 2024-10-06 09:05:08 浏览: 39
利用scrapy框架爬取http://www.quanshuwang.com/ 上所有小说,并创建层级文件夹分类存储
要使用Scrapy从`http://quotes.toscrape.com/page/1/`开始爬取5页名言信息,并以JSON (lines)格式保存内容、作者和标签,您可以按照以下步骤操作:
1. 首先确保已安装Scrapy:如果没有安装,可以通过pip进行安装:
```bash
pip install scrapy
```
2. 创建一个新的Scrapy项目:
```bash
scrapy startproject quotes_scraper
cd quotes_scraper
```
3. 进入项目目录后,创建一个名为`quotes_spider.py`的文件,然后添加以下代码:
```python
# quotes_spider.py
import scrapy
from json import.dumps
class QuotesSpider(scrapy.Spider):
name = "quotes"
base_url = "http://quotes.toscrape.com/"
start_urls = [base_url + "page/1/"]
max_pages = 5
def parse(self, response):
# 解析名言数据
for quote in response.css("div.quote"):
text = quote.css("span.text::text").get()
author = quote.css("small.author::text").get()
tags = quote.css("div.tags a.tag::text").getall()
# 创建JSON对象并序列化
data = {"content": text, "author": author, "tags": tags}
yield {"json_line": dumps(data)}
# 检查是否还有下一页
next_page = response.css("li.next a::attr(href)").get()
if next_page and int(next_page.split("/")[-2]) <= self.max_pages:
next_url = self.base_url + next_page
yield scrapy.Request(url=next_url, callback=self.parse)
```
4. 编译并运行爬虫:
```bash
scrapy crawl quotes
```
这个爬虫会从第1页开始抓取,直到达到你设定的5页。每次请求都会解析名言信息,将其打包成一个JSON对象,并通过`yield {"json_line": ...}`的方式输出。JSON内容会被以行的形式发送到控制台。记得根据实际需求调整`max_pages`变量。
阅读全文