scrapy爬虫框架初实现爬取豆瓣电影top250

Scrapy是适用于Python的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

1.首先安装Scrapy 

win+r 输入cmd打开控制栏 pip install scrapy 安装

2.安装完成后,命令提示符中输入 scrapy

可以使用startproject 命令创造一个新项目

3.在对应想放置文件夹的地方再次打开命令提示符,创造新项目 scrapy startproject+项目名字 

这里我创建了testspider 项目,项目里面的spider文件夹即使爬虫代码放置的地方

4.创建爬虫程序,cd到新创建的项目下打开命令提示符,使用

scrapy genspider+爬虫名字+目标网址。(要用此方式创造爬虫项目,否则运行时无crawl方法)

这里我 

5.整个项目文件用pycharm打开,在设置中创造虚拟环境,同时再pycharm中的虚拟环境再次

pip install scrapy  安装scrapy,这一次安装是为了使用scrapy中的包 

 

6.项目实现。在spider中打开第四步创建的爬虫文件。

 

start_urls是起始页面

打开起始页面,也是目标页面,f12打开开发者模式,这里检查找到电影标题对应的标签

 

右键复制selector ,这里是为了拿到文章标题的标签,同理再拿到评分和类型的标签

7.转到左侧的items文件中,这里创造一个对象用来接收爬取到的数据,然后再爬虫程序中导入这个对象。

class MovieItem(scrapy.Item): #将数据组装成一个item对象,定义类(代表一个电影的数据)
    title = scrapy.Field()
    rank = scrapy.Field()
    subject = scrapy.Field()

8.转到左侧的setting文件中,这里改用延迟和增加随机延迟,防止被反爬

DOWNLOAD_DELAY = 3   #延迟
RANDOMIZE_DOWNLOAD_DELAY = True  #随机延迟

9.爬虫部分代码

import scrapy
from scrapy import Selector,Request
from scrapy.http import HtmlResponse
from testspider.items import MovieItem

class Test1Spider(scrapy.Spider):
    name = "test1"
    allowed_domains = ["movie.douban.com"]

    def start_requests(self):
        for page in range(10):
            yield Request(url=f'https://movie.douban.com/top250?start={page * 25}&filter=')

    def parse(self, response: HtmlResponse):  # 拿到相应后的解析程序
        sel = Selector(response)
        list_ltem = sel.css("#content > div > div.article > ol > li")
        for i in list_ltem:
            movie_item = MovieItem()
            movie_item['title'] = i.css('span.title::text').extract_first()  # 使用css解析
            movie_item['rank'] = i.css('span.rating_num::text').extract_first()
            movie_item['subject'] = i.css('span.inq::text').extract_first()
            yield movie_item  # 生成器返回数据

10.程序运行 

在项目文件夹内执行命令(有scrapy.cfg所在的文件夹),

终端页面中输入 scrapy crawl+爬虫项目的名字+ -o +保存文件的名字和类型

我这里保存为douban.csv文件

 11.查看运行结果

 

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,可以的。Scrapy是一个强大的Python爬虫框架,我们可以用它来爬取豆瓣电影TOP250的信息。首先,我们需要安装Scrapy,可以使用pip命令进行安装: ``` pip install scrapy ``` 然后,我们可以创建一个Scrapy项目,命名为douban_top250,执行如下命令: ``` scrapy startproject douban_top250 ``` 接下来,我们需要创建一个Spider,用于爬取豆瓣电影TOP250的信息。在douban_top250/spiders目录下,新建一个douban_spider.py文件,编写如下代码: ```python 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.xpath('//div[@class="info"]'): yield { 'title': movie.xpath('div[@class="hd"]/a/span[@class="title"]/text()').extract_first(), 'rating': movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(), 'quote': movie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract_first() } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = response.urljoin(next_page[0].extract()) yield scrapy.Request(url, self.parse) ``` 上述代码中,我们定义了一个名为DoubanSpider的Spider,它的allowed_domains为豆瓣电影网站,start_urls为https://movie.douban.com/top250,表示我们要爬取豆瓣电影TOP250的页面。在parse方法中,我们使用XPath表达式提取每部电影的标题、评分和简介信息,并使用yield返回。然后,我们使用XPath表达式找到下一页的链接,并使用scrapy.Request发送请求,继续爬取下一页的信息。 最后,我们可以在命令行中执行如下命令,启动Spider爬虫程序: ``` scrapy crawl douban -o douban_top250.json ``` 这条命令表示运行名为douban的Spider,将结果保存到douban_top250.json文件中。爬取完成后,我们可以打开douban_top250.json文件,查看爬取到的电影信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值