使用scrapy框架爬取豆瓣影评

最近几天在看平凡岁月 感觉挺不错的一部生活剧,想看看豆瓣

对该据评论,使用scrapy爬取,基于python2.7进行实现

1. 创建scrapy项目
scrapy startproject doubanmovie
2.创建爬虫
scrapy genspider -t crawl dbm "movie.douban.com"

需要注意的是 爬虫名称不能和项目名称重复

3. 编写item

创建item

4.编写爬虫(spiders-->dbm.py)
# -*- coding: utf-8 -*-
import scrapy

from scrapy.linkextractors import LinkExtractor

from scrapy.spiders import CrawlSpider, Rule

from doubanmovie.items import DoubanmovieItem

class DbmSpider(CrawlSpider):
    name = 'dbm'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/subject/26795042/reviews?start=0']

    rules = (
        Rule(LinkExtractor(allow=r'start=\d+'), follow=True),
        Rule(LinkExtractor(allow=r'https://movie.douban.com/review/\d+/'), callback='parse_item', follow=False),
    )

    def parse_item(self, response):
        item = DoubanmovieItem()
        item['username'] = response.xpath("//header[@class='main-hd']/a/span/text()").extract()[0]
        title = response.xpath("//span[@property='v:summary']/text()").extract()[0]
        if len(title):
            item['title'] = title
        else:
            item['title'] = 'NULL'
        content = response.xpath("//div[@class='review-content clearfix']/p/text()").extract()
        if len(content):
            item['content'] = ''.join(content).strip()
        else:
            content = response.xpath("//div[@class='review-content clearfix']/text()").extract()
            if len(content):
                item['content'] = ''.join(content).strip()
            else:
                item['content'] = 'NULL'
        item['url'] = response.url
        yield item
5.编写管道文件(该案例使用json保存) doubanmovie->pipelines.py

import json
class YouyuanPipeline(object):
    def __init__(self):
        self.filename = open('youyuan.json','w')

    def process_item(self, item, spider):
        content = json.dumps(dict(item),ensure_ascii=False) + ',\n'
        self.filename.write(content.encode('utf-8'))
        return item

    def close_spider(self,spider):
        self.filename.close()
6.修改setting文件
USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.54 Safari/536.5'  
DOWNLOAD_DELAY = 3
ITEM_PIPELINES = {
   'doubanmovie.pipelines.DoubanmoviePipeline': 300,
}

7- 执行爬虫

scrapy crawl dbm

转载于:https://my.oschina.net/u/3273360/blog/1579179

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值