完成豆瓣图书爬虫,爬取最受关注图书榜中的书名和作者
时间: 2024-03-28 21:02:52 浏览: 102
爬取某个用户在豆瓣上标记的想读的图书
好的,以下是使用Scrapy框架实现的豆瓣图书爬虫,可以获取最受关注图书榜中的书名和作者:
1. 首先,需要安装Scrapy框架,可以使用以下命令进行安装:
```
pip install scrapy
```
2. 创建一个新的Scrapy项目,可以使用以下命令:
```
scrapy startproject douban_book
```
3. 进入到项目目录中,修改settings.py文件,添加以下配置:
```
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
ROBOTSTXT_OBEY = False
```
这里设置了User-Agent,避免被反爬虫机制识别,同时关闭了ROBOTSTXT_OBEY,不遵守robots.txt文件中的规则。
4. 创建一个新的Spider,可以使用以下命令:
```
scrapy genspider douban_book_spider book.douban.com
```
这个命令会在spiders目录下创建一个新的Spider文件,名称为douban_book_spider.py。
5. 修改douban_book_spider.py文件,将代码替换为以下内容:
```python
import scrapy
from scrapy.selector import Selector
from douban_book.items import DoubanBookItem
class DoubanBookSpider(scrapy.Spider):
name = "douban_book"
allowed_domains = ["book.douban.com"]
start_urls = [
"https://book.douban.com/chart?subcat=F&icn=index-topchart-fiction"
]
def parse(self, response):
book_list = Selector(response).xpath('//div[@class="pl2"]')
for book in book_list:
item = DoubanBookItem()
item['book_name'] = book.xpath('a/@title').extract_first().strip()
item['author'] = book.xpath('p[@class="pl"]/text()').extract_first().strip().split('/')[0]
yield item
```
这个Spider会访问豆瓣图书最受关注图书榜中的小说类图书页面,获取每本书的书名和作者,并将结果保存到DoubanBookItem中。
6. 创建一个新的Item,可以使用以下命令:
```
scrapy genspider douban_book_spider book.douban.com
```
这个命令会在项目目录下创建一个名为douban_book的目录,其中包含一个名为items.py的文件。将其中的代码替换为以下内容:
```python
import scrapy
class DoubanBookItem(scrapy.Item):
book_name = scrapy.Field()
author = scrapy.Field()
```
这个Item定义了需要获取的数据项。
7. 最后,在命令行中运行以下命令,启动爬虫:
```
scrapy crawl douban_book -o books.csv
```
这个命令会将获取到的数据保存到books.csv文件中。您可以在代码中修改数据的保存方式,例如保存到数据库或者其他文件格式中。
阅读全文