使用python的scrapy编写一个简单的爬虫,从网站https://quotes.toscrape.com/爬取内容(text)与作者(author),并保存在一个csv文件中。请给出相应代码。
时间: 2024-10-14 20:13:50 浏览: 23
爬取彼岸图网的壁纸 https://pic.netbian.com/
当然可以。首先,你需要安装Scrapy库如果还没有安装,可以使用pip命令安装:
```bash
pip install scrapy
```
接下来,创建一个新的Scrapy项目并生成一个基础的Spider。这里是一个简单的例子:
```python
# 导入必要的模块
import scrapy
# 创建一个新的Spider
class QuotesSpider(scrapy.Spider):
name = 'quotes'
start_urls = ['https://quotes.toscrape.com/']
# 解析函数,解析每个页面的HTML
def parse(self, response):
# 使用CSS选择器找到所有的引用元素
for quote in response.css('div.quote'):
# 提取文本和作者信息
text = quote.css('span.text::text').get()
author = quote.css('.author::text').get()
# 创建字典存储数据
data = {'text': text, 'author': author}
# 提交这个数据到Item Pipeline
yield data
# 爬取下一页,如果有更多页
next_page = response.css('li.next a ::attr(href)').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
# 运行爬虫并将结果保存到CSV文件
def run_spider():
settings = {
'FEED_FORMAT': 'csv', # 设置输出格式为CSV
'FEED_URI': 'quotes.csv', # 设置输出文件名
}
with open("quotes.spiders", "w") as f:
f.write('from scrapy.crawler import CrawlerProcess\n')
f.write(f'process = CrawlerProcess({settings!r})\n')
f.write('process.crawl(QuotesSpider)\n')
f.write('process.start()')
if __name__ == "__main__":
run_spider()
```
运行`run_spider()`函数,它会启动Scrapy爬虫,并将抓取的数据保存到名为`quotes.csv`的文件中。
注意:在实际应用中,你会需要安装`lxml`库来处理HTML,如果你还没有安装,可以添加`pip install lxml`。另外,由于网站结构可能会有变化,上述代码需要根据实际网页结构调整CSS选择器。
阅读全文