【学习记录】Scrapy框架爬取豆瓣图书短评数据,并存储成Excel,TXT(增加xpath处理方法)。

运用scrapy的知识,爬取豆瓣图书TOP250前2页的书籍(50本)的短评数据(包括书名、评论ID、短评内容),并存储成Excel。
网址链接:https://book.douban.com/top250
(爬虫精进14)
Windows 10 系统,Python 3.7

一、分析网页

第1页网址
第2页网址
多往后翻几页发现规律已经有了:
"https://book.douban.com/top250?start=" + “0” , “25” , "50……"
用 for…in range() 循环可以得到全部网址,我们只取前2页做练习
我们要获取的是每本书的书评相关的数据,在此前要找到所有的书籍链接。
所有书籍的完整链接都存在 div class=“pl2” 元素下,并且没有其他干扰内容,用find_all()提取所有属性为pl2的信息,遍历提取到的url_list, find(‘a’)[‘href’] 则可以帮我们获取到完整的链接。
在这里插入图片描述
随便点开一本书的链接,找到所有的短评,点开全部短评,观察一下它的网址,多了个 “comments/” 的后缀,短评第二页又多了个后缀 “hot?p=2” 。往后多翻几页发现p就是控制书评页数的,p=几就会翻到第几页,同样只取2页做个练习就好。
第1页书评内容网址第2页书评内容网址
网址都梳理清楚了,现在来观察要爬取的数据都藏在哪里。
书名,书评ID和书评内容都在 div id=“content” 元素中,书名在标签 h1 中
在这里插入图片描述
书评ID和书评内容都在 li class=“comment-item” 下,find_all()提取所有信息,遍历列表再取出相应的文本。

在这里插入图片描述
思路基本梳理完毕,开始写代码叭~

二、代码实现

1、创建scrapy项目

在本地终端打开你想创建项目的文件夹,输入命令行:

scrapy startproject FB12_01

scrapy目录结构
scrapy目录结构

2、定义items字段

import scrapy


class Fb1201Item(scrapy.Item):
    # 书名
    booknames = scrapy.Field()
    # 书评ID
    com_id = scrapy.Field()
    # 书评内容
    comments = scrapy.Field()

    pass

3、爬虫代码

spiders下创建DouBanbook_comments.py文件,用于编写爬虫代码,如下:

import scrapy,bs4
from ..items import Fb1201Item
# 需要引用Fb1201Item,它在items里面。因为是items在DouBanbook_comments.py的上一级目录,所以要用..items,这是一个固定用法。

class Fb1201Spider(scrapy.Spider):
    # 定义一个爬虫类Fb1201Spider
    name = 'book_comments'
    # 定义爬虫的名字为book_comments
    allowde_domains = ['book.douban.com']
    # 定义爬虫爬取网址的域名
    start_urls = []
    # 定义起始网址
    for i in range(2):
        url = 'https://book.douban.com/top250?start=' + str(i*25)
        start_urls.append(url)
        # 把豆瓣Top250图书的前2页网址添加进start_urls


    def parse(self, response):
        # parse是默认处理response的方法
        bs = bs4.BeautifulSoup(response.text,'html.parser')
        url_list = bs.find_all('div', class_="pl2")
        #用find_all提取<div class="pl2">元素,这个元素里含有书籍链接
        for ul in url_list:
            url = ul.find
  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用 Scrapy 框架爬取豆瓣的步骤: 1. 创建 Scrapy 项目 在命令行中输入以下命令创建一个新的 Scrapy 项目: ``` scrapy startproject douban ``` 这将会在当前目录下创建一个名为 `douban` 的文件夹,其中包含了 Scrapy 项目的基本结构。 2. 创建爬虫 在 `douban/spiders` 目录下创建一个名为 `douban_spider.py` 的文件,该文件将包含我们编写的爬虫代码。 在 `douban_spider.py` 中,我们需要定义一个类,该类需要继承自 Scrapy 提供的 Spider 类,并实现以下属性和方法: - `name`:爬虫的名称。 - `start_urls`:起始 URL 列表,爬虫将从这些 URL 开始抓取数据。 - `parse`:响应数据的解析函数,用于处理爬虫从页面中获取到的数据。 以下是一个简单的示例代码: ```python import scrapy class DoubanSpider(scrapy.Spider): name = "douban" start_urls = [ 'https://movie.douban.com/top250', ] def parse(self, response): # 处理抓取到的数据 pass ``` 3. 解析页面数据 在 `parse` 方法中,我们需要编写代码来解析页面数据Scrapy 提供了一些方便的方法来获取页面中的数据,其中最常用的是 `response.xpath` 和 `response.css`。 以下是一个简单的示例代码,用于获取页面中的电影名称和评分: ```python def parse(self, response): for movie in response.xpath('//div[@class="hd"]'): yield { 'title': movie.xpath('.//span[@class="title"]/text()').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), } ``` 4. 运行爬虫程序 在命令行中进入到项目目录下,运行以下命令即可启动爬虫程序: ``` scrapy crawl douban ``` 爬虫程序将会从起始 URL 开始抓取数据,并将抓取到的数据输出到控制台。可以通过一些设置来将数据保存到文件或数据库中。 以上就是使用 Scrapy 框架爬取豆瓣的基本步骤。需要注意的是,爬虫程序需要遵守网站的爬虫协议,不要过度频繁地访问页面,否则可能会被网站封禁。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值