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.查看运行结果

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值