scrapy框架简单实现豆瓣评分爬取案例

news2024/9/17 8:34:50

豆瓣网址:https://movie.douban.com/top250

1.创建scrapy框架

scrapy startproject 项目名(scrapy_test_one)

创建好以后的目录是这样的

在这里插入图片描述

2.创建spider文件

在spiders目录下创建一个spider_one.py文件,可以随意命名,该文件主要是让我们进行数据爬取的。
运行命令:

scrapy genspider spider_one baidu.com

注意末尾的域名是用来设置爬取的范围的

spider_one.py代码如下

import scrapy
from scrapy import Request

from scrapy_test_one.items import ScrapyTestOneItem
# from scrapy.selector import HtmlXPathSelector


class SpiderOneSpider(scrapy.Spider):
    name = "spider_one"
    allowed_domains = ['movie.douban.com/top250']
    start_urls = ['https://movie.douban.com/top250']


    def parse(self, response, *args):
        movie_items = response.xpath('//div/ol[@class="grid_view"]')
        # print("======================",movie_items)

        for item in movie_items:
            movie = ScrapyTestOneItem()

            # src = item.xpath('//li/div/div/a/img/@src').extract_first()
            # print("===================",src)
            # movie["img"] = src

            title = item.xpath('//li/div/div[2]/div/a/span[1]/text()')
            movie["title"] = title.extract()
            print("=========================title=======================",title)
            # movie['rank'] = item.xpath('')
            # # print(movie['rank'])
            # movie['title'] = item.xpath(
            #     'div[@class="info"]/div[@class="hd"]/a/span[@class="title"][1]/text()').extract()
            # movie['poster'] = item.xpath('div[@class="pic"]/a/img/@src').extract()
            # movie['link'] = item.xpath('div[@class="info"]/div[@class="hd"]/a/@href').extract()
            # movie['rating'] = item.xpath(
            #     'div[@class="info"]/div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()


            yield movie

3.对settings进行配置

放开useragent,配置好对应的值

USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'

关闭robots协议

# Obey robots.txt rules
ROBOTSTXT_OBEY = False

放开管道限制

ITEM_PIPELINES = {
   "scrapy_test_one.pipelines.ScrapyTestOnePipeline": 300,
}

4.配置items文件

在items.py文件中添加需要的字段

import scrapy


class ScrapyTestOneItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field()
    img = scrapy.Field()
    title = scrapy.Field()

5.配置piplines.py文件

from itemadapter import ItemAdapter
from scrapy_test_one.items import ScrapyTestOneItem
import pymongo
host = 'localhost'
port = 27017
db_name = 'DBmovies'



class ScrapyTestOnePipeline:
    def open_spider(self, spider):
    	# 连接数据库
        self.client = pymongo.MongoClient(host=host, port=port)            
        self.db = self.client[db_name]


    def process_item(self, item, spider):
        items = dict(item)
        if isinstance(items, dict):
            print("============================",items)
            self.collection = self.db['movies']
            self.collection.insert_one(items)

            # self.db["movies"].insert_one(items)
        else:
            return "数据格式错误"

6.所有配置完后就可以运行程序进行爬取并存储啦

运行命令:

scrapy crawl spider_one

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/822252.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MaxPatrol SIEM 增加了一套检测供应链攻击的专业技术

我们为 MaxPatrol SIEM 信息安全事件监控系统增加了一套新的专业技术。 该产品可帮助企业防范与供应链攻击相关的威胁。 此类攻击正成为攻击者的首要目标:它们以软件开发商和供应商为目标,网络犯罪分子通过他们的产品进入最终目标的基础设施。 因此&a…

【数据结构】——线性表的相关习题

目录 题型一(顺序表的存储结构)题型二(链表的判空)题型三(单链表的建立)题型四(顺序表、单链表的插入删除) 题型一(顺序表的存储结构) 1、线性表的顺序存储结…

Framework开发的热度从未下降~

近几日,统计局也发布了就业相关数据,全国失业青年达600多万,面对此数据,我们能想到的是实际的失业人数肯定会比公布的数据要多很多,尤其是表示 “一周工作一小时以上” 也纳入了就业范围。 反观有一批Android开发在如此…

JavaWeb之HTML基础篇(一)

系列文章目录 HTML基础篇(一) 文章目录 系列文章目录HTML基础篇(一)[TOC](文章目录) 前言一、HTML简介1.1介绍1.2HTML文件的书写规范1.3 HTML标签介绍1.4 HTML常见的标签 二、CSS的简介2.1css技术介绍2.2 CSS与HTML结合的三种方式…

org.springframework.beans.factory.aot.BeanRegistrationExcludeFilter-若依二开报错(已解决)

阿丹-问题描述: 今天在复制已经拆解过后的若依system模块删除掉中间的一些东西之后,出现了一个问题。已启动就报错。报错截图如下。 问题解析: 身边不少二开若依的小伙伴都遇到了这个问题。 这个异常是因为在启动应用程序时,Sprin…

杜教筛的小结

总所周知,杜教筛是一个可以快速求积性函数前缀和的工具,为了快速理解杜教筛,自己给自己写了一个文章快速理解。 它可以在O(n2/3)的复杂度快速求出某个积性函数的前缀和。 例如,我们想要知道 f f f函数的前缀和,我们可…

selenium官网文档阅读总结(day 2)

1.selenium元素定位方法 1.1selenium命令 当我们使用chormdriver打开网页后,接下来就要用python操作元素,模拟用户会作出的操作,这些操作元素的方法就是命令。比如 (1) click:点击(按钮,单选框&#xff…

STM32(HAL)多串口进行重定向(printf函数发送数据)

目录 1、简介 2.1 基础配置 2.1.1 SYS配置 2.1.2 RCC配置 2.2 串口外设配置 2.3 项目生成 3、KEIL端程序整合 4、效果测试 1、简介 在HAL库中,常用的printf函数是无法使用的。本文通过重映射实现在HAL库多个串口可进行类似printf函数的操作。 2.1 基础配置 2.…

《向量数据库指南》——腾讯云向量数据库Tencent Cloud Vector DB正式上线公测!提供10亿级向量检索能力

8月1日,腾讯云向量数据库(Tencent Cloud Vector DB)已正式上线公测。在腾讯云官网上搜索“向量数据库”,就可以正式体验该产品。 腾讯云向量数据库不仅能为大模型提供外部知识库,提高大模型回答的准确性,还可广泛应用于推荐系统、文本图像检索、自然语言处理等 AI 领域。…

【ARM Coresight 系列文章 2.3 - Coresight 寄存器】

文章目录 Coresight 寄存器介绍1.1 ITCTRL,integration mode control register1.2 CLAIM寄存器1.3 DEVAFF(Device Affinity Registers)1.4 LSR and LAR1.5 AUTHSTATUS(Authentication Status Register) Coresight 寄存器介绍 Coresight 对于每个 coresight 组件&am…

Python 进阶(七):高级文件操作(shutil 模块)

❤️ 博客主页:水滴技术 🌸 订阅专栏:Python 入门核心技术 🚀 支持水滴:点赞👍 收藏⭐ 留言💬 文章目录 1. 简介2. 常用函数2.1 复制文件2.2 复制目录2.3 移动文件或目录2.4 删除文件或目录2.…

【C++】STL——list的模拟实现、构造函数、迭代器类的实现、运算符重载、增删查改

文章目录 1.模拟实现list1.1构造函数1.2迭代器类的实现1.3运算符重载1.4增删查改 1.模拟实现list list使用文章 1.1构造函数 析构函数 在定义了一个类模板list时。我们让该类模板包含了一个内部结构体_list_node,用于表示链表的节点。该结构体包含了指向前一个节点…

构建容错软件系统的艺术

现在,我们生活在由软件系统推动的世界中。这些系统深入到我们日常生活的各个方面,其连续、可靠的性能不再是奢侈,而是必需。现在,企业比以往任何时候都更需要保证他们的系统可用、可靠,并具有弹性。这种需求由满足客户…

使用Freemarker模版导出xls文件使用excel打开提示文件损坏

本文是通过一步步的还原事件的发生并解决的一个过程记录,如果想知道如何解决的可以直接跳转文章末尾结论部分 提示一下,关注一下 Table 标签中的 ss:ExpandedRowCount 属性 解决的问题 在项目中使用freemarker的xml模板导出xls格式的Excel文件时&#xf…

哪些行业需要连接云专线?

在诸多行业之中,有一些行业对数据安全性要求高、业务需要实时性、业务需求复杂,往往需要建立起私密、高速、安全的传输通道,云专线是他们经常采用的方案。具体来讲,都有哪些行业需要连接云专线呢?请见下方。 1、金融行…

分布式应用:GFS分布式文件系统

目录 一、理论 1.GlusterFS 2.GlusterFS卷类型 3. GlusterFS与RAID汇总 4.部署 GlusterFS 群集 5.部署Gluster集群环境(所有node节点操作) 6.创建卷 7. 部署 Gluster 客户端 8.测试 Gluster 文件系统 9.其他的维护命令 二、实验 1.部署Glust…

java学习路程之篇七、进阶知识、时间类、JDK8前后的时间类差异

文章目录 1、时间类2、JDK8(-)时间类3、JDK8()时间类 1、时间类 2、JDK8(-)时间类 3、JDK8()时间类

我的 365 天创作纪念日

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…

华为HCIP第三节-----------------------------MPLS VPN

一、MPLS VPN原理与配置 1、MPLS VPN定义 BGP/MPLS IP VPN网络一般由运营商搭建,VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等。 MPLS VPN使用BGP在运营商骨干网(IP网络)上发布VPN路由,使用MPLS在运营商骨干网上…

Vue + ElementUI 实现可编辑表格及校验

效果 完整代码见文末 实现思路 使用两个表单分别用于实现修改和新增处理。 通过一个editIndex变量判断是否是编辑状态来决定是否展示输入框&#xff0c;当点击指定行的修改后进行设置即可&#xff1a; <el-table-columnv-for"(column, index) in columns":key&qu…