【scrapy】scrapy爬取数据指南

使用Python和Scrapy实现抓取网站数据 在Scrapy项目中,爬虫是用于抓取和解析网页的主要组件。要创建一个新的爬虫,请在目录下创建一个名为的文件,并输入以下代码:1234567891011121314importscrapyclassname'example'start_urlsdefparse(selfself.log(forquotein):itemyielditem在这个例子中,我们定义了一个名为的新爬虫类,它继承自。我们为爬虫指定了一个唯一的名称example。 阅读详情

scrapy是爬虫界常用的基于Python爬虫框架,但是网上找了很多这类的文章,发现有多处错误,故为了让刚想尝试爬虫的蜘蛛们少走点坑,故把最新的方法奉上。
在此之前,请先更新你的pip版本,并安装scrapy , pymysql。

pip install scrapy
python3 -m pip install pymysql

首先我的目录结构是这样的,你可以使用如下命令进行初始化

scrapy startproject SpiderObject
//参考:https://blog.youkuaiyun.com/skullfang/article/details/78607942

这里写图片描述
1.编写items.py

import scrapy

class MovieItem(scrapy.Item):
    name = scrapy.Field()
    movieInfo = scrapy.Field()
    star = scrapy.Field()
    number = scrapy.Field()
    quote = scrapy.Field()
    pass

2.编写MovieSpider.py

# -*- coding: utf-8 -*-
from scrapy.spider import Spider
from scrapy.http import Request
from scrapy.selector import Selector
from SpiderObject.items import MovieItem

import requests
import time

class MovieSpider(Spider):
     # 爬虫名字
    name = 'MovieSpider'
     # 反爬措施
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}
    url = 'https://movie.douban.com/top250'
     # start_urls = ['movie.douban.com']

    def start_requests(self):
        # url = 'https://movie.douban.com/top250'
        yield Request(self.url, headers=self.headers, callback=self.parse)

    def parse(self, response):
        item = MovieItem()
        selector = Selector(response)
        movies = selector.xpath('//div[@class="info"]')
        for movie in movies:
            name = movie.xpath('div[@class="hd"]/a/span/text()').extract()
            message = movie.xpath('div[@class="bd"]/p/text()').extract()
            star = movie.xpath('div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract()
            number = movie.xpath('div[@class="bd"]/div[@class="star"]/span/text()').extract()
            quote = movie.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract()
            if quote:
                quote = quote[0]
            else:
                quote = ''
            item['name'] = ''.join(name)
            item['movieInfo'] = ';'.join(message).replace(' ', '').replace('\n', '')
            item['star'] = star[0]
            item['number'] = number[1].split('人')[0]
            item['quote'] = quote
            yield item
        nextpage = selector.xpath('//span[@class="next"]/link/@href').extract()
        time.sleep(3)
        if nextpage:
            nextpage = nextpage[0]

            yield Request(self.url + str(nextpage), headers=self.headers, callback=self.parse)


3.编写pipelines.py与mysql数据库进行连接

import pymysql

class MoviePipeline(object):
    def __init__(self):
        # 连接数据库
        self.conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='root',
                                    db='DOUBANDB',charset='utf8')
        # 建立游标对象
        self.cursor = self.conn.cursor()
        self.cursor.execute('truncate table Movie')
        self.conn.commit()

    def process_item(self, item, spider):

        try:
            self.cursor.execute("insert into Movie (name,movieInfo,star,number,quote) \
            VALUES (%s,%s,%s,%s,%s)", (item['name'],item['movieInfo'],item['star'],
                                      item['number'],item['quote']))
            self.conn.commit()

        except pymysql.Error:
            print("Error%s,%s,%s,%s,%s" % (item['name'],item['movieInfo'],item['star'],
                                              item['number'],item['quote']))
            return item

4.设置settings.py

这里写图片描述
这里写图片描述

5.搭建mysql数据库

我们通过代码自动访问mysql数据库,
前提是你要先开启mysql连接,并在127.0.0.1下新建数据库DOUBANDB,如图所示:
这里写图片描述

如何用代码自动添加并设计Movie表结构呢:
新建conn_sql.py

import pymysql

db = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='DOUBANDB', charset='utf8')

cursor = db.cursor()

cursor.execute('DROP TABLE IF EXISTS MOVIE')

sql = """CREATE TABLE MOVIE(
          id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '自增 id',
          name VARCHAR(1024) NOT NULL COMMENT '电影名',
          movieInfo VARCHAR(1024) DEFAULT NULL COMMENT '电影简介',
          star VARCHAR(20) NOT NULL COMMENT '评分',
          number VARCHAR(1024) NOT NULL COMMENT '评价人数',
          quote VARCHAR(1024) NOT NULL COMMENT '简评',
          createtime DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间'
          )"""

cursor.execute(sql)

db.close()

6.执行爬取并存入

只需要执行一行代码:

scrapy crawl MovieSpider

7.结果

这里写图片描述

Scrapy爬取数据案例 Scrapy爬取数据 阅读详情

相关推荐

使用Scrapy爬取一个网站的数据

Scrapy框架的初步运用

G_Q_L的博客 5491

Scrapy爬虫方法

scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。

weixin_44302046的博客 2397

Scrapy选择器:使用Python爬虫框架Scrapy进行数据提取

在Scrapy中,选择器(Selector)是一种强大的工具,它可以帮助我们从网页中提取所需的数据。在实际的爬虫开发中,我们可以将Scrapy选择器与Scrapy框架的其他功能结合使用,如请求管理、数据存储等,从而构建出高效、可靠的网络爬虫系统。Scrapy选择器的灵活性使得我们可以根据特定的网页结构和需求来定制和调整选择器表达式,从而实现精准的数据提取。除了XPath选择器,Scrapy还提供了基于CSS的选择器,它使用CSS选择器语法来选择和提取网页中的数据。首先,我们需要安装Scrapy框架。

TechSavant的博客 312

Python爬虫框架Scrapy,更高效地抓取数据

Scrapy是一个用Python编写的开源网络爬虫框架。

BXA 4306

如何使用 Python 爬虫 Scrapy 获取网页(某度)内容?

如何使用 Python 爬虫 Scrapy 获取网页内容?

weixin_43263566的博客 1959

用Scrapy和Selenium爬取动态数据

文章参考千锋教育大佬的课程: https://www.bilibili.com/video/BV1QY411F7Vt?p=1&vd_source=5f425e0074a7f92921f53ab87712357b ,多谢大佬的课程  因为Taobao网的搜索功能需要登录之后才能使用,所以我们要通过程序去控制浏览器实现登录功能,然后再获取登录之后的Cookie.   首先创建一个Chrome浏览器对象,用这个对象去操控谷歌浏览器:   接着就可以通过这个对象去操作浏览器登录Taobao网,并且把Cookie存进

爱吃雪糕的小布丁的博客 1万+

Scrapy爬取多级页面数据

使用scrapy从多级页面中提取数据

manfanying的博客 3056

Scrapy微博数据爬取实战指南

在深入理解Scrapy之前,先来理解爬虫的基础架构是非常重要的。架构的设计直接关系到爬虫的可扩展性、稳定性和效率。

weixin_28922227的博客 1798

PyCharm+Scrapy爬取数据并存入MySQL

PyCharm+Scrapy爬取数据并存入MySQL一、创建爬虫项目二、创建爬虫并编写代码2-1、编写items.py2-2、编写spiders/douban.py2-3、编写pipelines.py2-4、编写settings.py三、使用Pycharm连接MySQL数据库四、创建爬虫项目对应的表以及执行爬虫。4-1、创建表4-2、执行爬虫4-3、查询数据,验证结果 一、创建爬虫项目 使用Terminal启动对应项目命令行 scrapy startproject doubanSpider 创建项目。

jeremyli228的博客 5359

期货套利策略(二)

接上一篇期货套利策略,随着对期货套利策略的深入了解,我发现套利策略不是那么好做的。下面将会讲碰到的一些问题。 上一篇文章中没有考虑滑点的问题,这里我们把滑点问题考虑进去。这里先说一些天勤api的买入点,天琴的买入点是当前K线的收盘价。碰到数据传输问题,还有计算等各方面问题,实际情况是无法在当前K线的收盘价买入的。这里我们把这方面问题考虑进去,利用api.wait_update()调到下一个k线数据...

qq_31611005的博客 1711

北京途游游戏后端开发面经

北京途游游戏后端开发面经 我面试岗位是基于Python的后端开发工程师,主要是搞游戏的服务器开发。面试一共分了两轮,之后说是看看其他的候选人再定,感觉凉凉~~ 由于受到此次新型冠状病毒疫情的影响,本次面试采用视频面试的方式,下面是面试的时候面试官提的问题,python的基础知识还是问的比较多的。  一面:(32分钟微信视频)  简单做下自我介绍,   1.说一下你开发过的项目,挑一个说下你都做了...

weixin_45603043的博客 2124

Scrapy 框架爬取我爱我家网站数据

爬取我爱我家网站数据

weixin_62827213的博客 1671

ComfyUI Impact Pack实战:如何用三大检测器打造高效人脸修复工作流(附2025最新模板)

本文详细解析了如何利用ComfyUI Impact Pack中的BBOX、Segm和SAM三大检测器构建高效人脸修复工作流。通过技术选型、参数优化和实战案例,帮助用户掌握从精准定位到细节修复的全流程技巧,特别适用于商业摄影和影视制作场景。文章还提供了2025年最新模板和性能优化方案,显著提升人脸精修效率。

weixin_29040367的博客 243

Scrapy爬取网页数据

Scrapy爬取并保存网页数据 网页爬取在上一篇博客中已写过,在这里不在写相关步骤,需要的可以查看上一篇博客。 地址为:https://blog.youkuaiyun.com/csdnmgq/article/details/88703019 将itcast.py文件下的代码替换为: import scrapy from test002.items import ItcastItem class It...

沧海一滴水 570

微带线贴片天线尺寸的计算,利用Matlab计算+常见的RF计算在线公式

微带线贴片天线尺寸的计算,利用Malatb计算 这几天在使用hfss对矩形天线仿真,每次改变频率和实验的材料,都要重新计算一遍,太麻烦了,所以用matlab进行计算。 知道天线的工作频率:f_r 介质板的介电常数:epsilon_r 介质板厚度:h 就可以计算出矩形天线的长:L 矩形天线的宽:W 对于下面公式的单位要注意,公式以及化简了,要注意单位 由于matlab中的变量不能用希腊字母代替,所以用了该字母的读音 代码如下: f_r=2.45; %工作频率,单位GHz epsilon_r=3.5;

weixin_43404609的博客 2万+

【前端基础篇】HTML5 + CSS3 入门知识

,HTML5和CSS3核心知识

前端知识分享喵 2982

利用Scrapy架构爬取网页数据步骤

Scrapy架构爬取网页步骤 一、新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 1、在pycharm开发工具终端输入命令: scrapy startproject mySpider 2、执行命令之后在保存路径下会出现项目: 3、在pycharm中新建项目: 二、明确目标 (编写items.py):明确你想要抓取的目标 1、构建 ...

沧海一滴水 8309

【TCAD】AlGaN 器件的Sentaurus仿真

否则,必须在 LatticeParameters Sentaurus Device 的参数文件中的部分。Sentaurus Device 有两个工具实例:第一个工具实例, sd_fdiv ,模拟正向偏置特性,第二个工具实例, sd_rviv ,模拟反向偏置特性直至击穿。对于牛顿求解器,通常应该将非线性迭代次数限制为一个足够小的值,例如 Iterations=20 ,同时通过指定非阻尼迭代次数高于允许的牛顿迭代次数来避免解的阻尼( NotDamped=30 )。晶胞中的 Ga-N 键为橙色。

荷塘阅色 1213

python中scrapy可以爬取多少数据_使用Scrapy爬取大规模数据

系统学习了解Python爬虫有20天时间了,做了一些爬虫小实验,如:但是以上爬取的数据量都不大,最多的有一千多数条数据。于是想做一次大数据量的爬取。选择的数据源是简书用户,使用的是Scrapy框架。同时也想对简书的用户做一个数据分析。要爬取大量数据,使用Scrapy要考虑的是新的url在哪里产生,解析的方法如何循环调用,也就是爬取的深度和广度。在Scrapy官方文档上的案例过于简单,实现的过程遇到...

weixin_39567943的博客 1317

使用Simulink进行带通滤波器的设计与仿真研究

摘要:本文介绍利用Simulink设计和仿真带通滤波器的方法。通过定义系统需求(保留100-500Hz信号),创建包含多频信号源、加法器和巴特沃斯滤波器的模型,重点展示滤波器频率选择特性。详细步骤包括模块配置、参数设置(中心频率300Hz、带宽400Hz)、信号连接及可视化分析。实验验证了带通滤波器有效提取目标频段信号的能力,为复杂信号处理系统开发提供基础框架。所需工具为MATLAB R2023a和DSPSystemToolbox。

xiaoheshang_123的博客 325

【红绿灯识别】基于计算机视觉实现道路信号灯检测识别系统附Matlab代码

随着自动驾驶技术的快速发展,对道路交通信号灯的检测识别技术也提出了更高的要求。本文提出了一种基于计算机视觉的道路信号灯检测识别系统,该系统能够准确地检测和识别道路交通信号灯,并输出信号灯的颜色信息。该系统采用深度学习方法,利用卷积神经网络(CNN)对道路交通信号灯进行检测和识别。实验结果表明,该系统能够在复杂的环境中准确地检测和识别道路交通信号灯,具有较高的实用价值。道路交通信号灯是道路交通管理的重要组成部分,它能够有效地组织交通,提高道路通行效率,保障交通安全。

qq_59747472的博客 338

Scrapy爬取链家数据(一):上手Scrapy框架

最近在关注北京房价变化,关注策略为先筛选小区,然后筛选小区内房价。就实现思路而言,首先想到的是使用爬虫爬取链家网中的数据并保存至数据库中,然后进行简单分析,得出小区及房价变化趋势。经过简单技术选型,决定采用scrapy框架完成上述数据爬取,使用mysql记录数据,记录数据样例如图所示。本系列文章包含爬取小区信息爬取房价信息具体实现及实现过程中问题处理方法。

somanybeans的博客 1788

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Scrapy框架爬取数据

因为对爬虫有着很大的好奇心,所以又找了一些资料继续开始了学习之旅。 文章目录一、Scrapy框架简介二、爬取网络数据2.1爬取单个网页数据2.2爬取多个网页数据三、一些小方法四、小结 一、Scrapy框架简介 如果你有跑车,你还会步行吗?这是李刚老师书里的一句话。在这里Scrapy就是爬虫,而像Python内置的urllib和re模块则是步行,跑车和步行的确都可以到达目的地,但是我们大多数通常还是会选择跑车,毕竟速度快而且又方便。简单的来讲,Scrapy是一个专业的、高效的爬虫框架,当然像这样的框架也不在

dayuhaitang1的博客 3998

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

scrapy爬取京东的数据

import scrapy from scrapy import Field class JdItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() title = scrapy.Field() # 标题 price = scrapy.F...

小东升职记 1974

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python 爬取数据还要下载scrapy吗_Scrapy下的数据爬取全流程

Scrapy的下载在终端中输入代码'pip3 install scrapy'。创建Scrapy项目假设你希望将项目保存至桌面名为Python的文件夹中。可以在终端中输入'cd ',并将Python文件夹拖拽至其后。换行后,继续输入'scrapy startproject ScrapyProject',此处的ScrapyProject为该项目的名字,可根据情况自行定义。#示例:cd /Users/u...

weixin_39997089的博客 231

Scrapy爬取多页数据

一、创建项目 打开pycharm下面的Terminal窗口 scrapy startproject 项目名 例如:scrapy startproject crawler51job 二、定义要爬取的数据 编写items文件 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # Se...

云飞扬°的博客 4082
上一篇: 【程序人生】浅谈锤子科技515发布会
下一篇: 【转载】区块链技术原理、应用领域及挑战
蟹蟹蟹风流
蟹蟹蟹风流 优质创作者: 编程框架技术领域 优质创作者: 编程框架技术领域 领域专家: 前端开发技术领域 领域专家: 前端开发技术领域
博客等级 码龄11年 3万+粉丝 396原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蟹蟹蟹风流

期望和你分享一杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值