用SCRAPY爬取豆瓣

本文介绍如何使用Scrapy框架从豆瓣网站爬取电影数据,包括电影名称、演员、评分和网页链接。通过定义Items和Spider类,实现数据的解析和存储,最终将数据保存为txt或json格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用SCRAPY爬取豆瓣

Items.py

import scrapy


class Douban1Item(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    names = scrapy.Field()
    actors = scrapy.Field()
    scores= scrapy.Field()
    webs = scrapy.Field()

douban.py

import scrapy
from douban1.items import Douban1Item

class DoubanSpider(scrapy.Spider):
    header={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
    name = 'douban'
    allowed_domains = ['movie.douban.com']
    start_urls = ['https://movie.douban.com/chart']

    def parse(self, response):
        selector=response.xpath('//div[@class="indent"]//tr[@class="item"]')
        for movie in selector:
            item = Douban1Item()
            item['names'] =movie.xpath("//a[@class='nbg']/@title").extract()
            print('\t')
            item['actors']= movie.xpath("//p[@class='pl']/text()").extract()
            print('\t')
            item['scores'] = movie.xpath("//span[@class='rating_nums']/text()").extract()
            print('\t')
            item['webs'] = movie.xpath("//a[@class='nbg']/@href").extract()
            print('\t')
        return item





pipelines.py
写入txt文件如下:

class Douban1Pipeline(object):
    def process_item(self, item, spider):

        with open('douban.txt', 'a+')  as fp:
            fp.write(str(item['names'])+'\n\n')
            fp.write(str(item['scores'])+'\n\n')
            fp.write(str(item['actors'])+'\n\n')
            fp.write(str(item['webs'])+'\n\n')

pipelines.py
写入json文件如下:

class Douban1Pipeline(object):
     def open_spider(self,spider):
         self.filename=open('douban.json','a')

     def process_item(self, item, spider):
         content=json.dumps(dict(item),ensure_ascii=False)+'\t\t\t\t\t'
         self.filename.write(content)
         return item

      def close_spider(self,spider):
         self.filename.close()

好的,以下是使用Scrapy爬取豆瓣电影的步骤: 1.创建Scrapy项目 在命令行中输入以下命令,在指定位置创建一个名为douban_movie的Scrapy项目。 ``` scrapy startproject douban_movie ``` 2.编写Spider 在项目的spiders目录下,创建一个名为douban_spider.py的Python文件。并在其中编写Spider代码。 ``` import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): for movie in response.css('div.item'): yield { 'title': movie.css('span.title::text').get(), 'rating': movie.css('span.rating_num::text').get(), 'link': movie.css('div.hd a::attr(href)').get() } next_page = response.css('span.next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 在这个Spider中,我们首先定义了Spider的名称和允许爬取的域名。然后,我们指定了起始URL,并定义了parse方法来解析网页内容。 在parse方法中,我们使用CSS选择器选取出了每部电影的标题、评分和详情链接,并将它们封装成字典形式返回。同时,我们也使用了response.follow方法来跟随下一页链接继续爬取。 3.设置项目配置 打开项目的settings.py文件,将ROBOTSTXT_OBEY设置为False,这样我们就可以爬取豆瓣电影网站了。 ``` ROBOTSTXT_OBEY = False ``` 4.运行Spider 在项目的根目录下,执行以下命令来运行Spider。 ``` scrapy crawl douban -o movies.csv ``` 这个命令会执行我们编写的Spider,并将结果保存到一个名为movies.csv的CSV文件中。 恭喜你,现在你已经成功使用Scrapy爬取豆瓣电影网站的电影信息!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值