Python爬虫框架Scrapy教程(1)—入门

Python爬虫(入门+进阶)学习笔记 2-1 爬虫工程化及Scrapy框架初窥 本章节将会系统地介绍如何通过Scrapy框架把爬虫工程化。本节主要内容是:简单介绍Python和爬虫的关系,以及将要使用的Scrapy框架的工作流程。Python适合做爬虫的原因语言本身简单,适合敏捷开发有比较完善的工具链足够灵活,以应对各种突然状况爬虫的知识体系前端相关知识:html,css,js;浏览器相关知识;各种数据库的运用;http协议的了解;对于前后台联动的方案;爬虫进阶的工作流程Sc... 阅读详情

最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题、时间、正文等)。问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata 这类标准。这时候所有网页共用一套默认规则无法保证正确抓取到信息,而每个网页写一份spider代码也不切实际。

这时候,我迫切地希望能有一个框架可以通过只写一份spider代码和维护多个网站的爬取规则,就能自动抓取这些网站的信息,很庆幸 Scrapy 可以做到这点。鉴于国内外关于这方面资料太少,所以我将这段时间来的经验和代码分享成了本文。

为了讲清楚这件事,我分成了三篇文章来叙述:

  1. 编程方式下运行 Scrapy spider
  2. 使用Scrapy定制可动态配置的爬虫
  3. 使用Redis和SQLAlchemy对Scrapy Item去重并存储

本篇文章主要介绍如何使用编程的方式运行Scrapy爬虫。

在开始本文之前,你需要对 Scrapy 有所熟悉,知道 Items、Spider、Pipline、Selector 的概念。如果你是 Scrapy 新手,想了解如何用Scrapy开始爬取一个网站,推荐你先看看官方的教程。

运行一个Scrapy爬虫可以通过命令行的方式(scrapy runspider myspider.py)启动,也可以使用核心API通过编程的方式启动。为了获得更高的定制性和灵活性,我们主要使用后者的方式。

我们使用官方教程中的 Dmoz 例子来帮助我们理解使用编程方式启动spider。我们的 spider 文件dmoz_spider.py 长这个样子:

import scrapy

class DmozItem(scrapy.Item):
    title = scrapy.Field()
    link = scrapy.Field()
    desc = scrapy.Field()

class DmozSpider(scrapy.Spider):
    name = "dmoz"
    allowed_domains = ["dmoz.org"]
    start_urls = [
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
        "http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
    ]

    def parse(self, response):
        for sel in response.xpath('//ul/li'):
            item = DmozItem()
            item['title'] = sel.xpath('a/text()').extract()
            item['link'] = sel.xpath('a/@href').extract()
            item['desc'] = sel.xpath('text()').extract()
            yield item


接下来我们需要写一个脚本run.py,来运行DmozSpider:

from dmoz_spider import DmozSpider

# scrapy api
from scrapy import signals, log
from twisted.internet import reactor
from scrapy.crawler import Crawler
from scrapy.settings import Settings

def spider_closing(spider):
    """Activates on spider closed signal"""
    log.msg("Closing reactor", level=log.INFO)
    reactor.stop()

log.start(loglevel=log.DEBUG)
settings = Settings()

# crawl responsibly
settings.set("USER_AGENT", "Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36")
crawler = Crawler(settings)

# stop reactor when spider closes
crawler.signals.connect(spider_closing, signal=signals.spider_closed)

crawler.configure()
crawler.crawl(DmozSpider())
crawler.start()
reactor.run()

然后运行python run.py就启动了我们的爬虫了,但是由于我们这里没有对爬下来的结果进行任何的存储操作,所以看不到结果。你可以写一个 item pipline 用来将数据存储到数据库,使用settings.set接口将这个 pipline 配置到ITEMS_PIPLINE,我们将在第三篇文章中具体讲解这部分内容。下一篇博客将会介绍如何通过维护多个网站的爬取规则来抓取各个网站的数据。

你可以在 GitHub 上看到本文的完整项目。

注:本文使用的 Scrapy 版本是 0.24,GitHub 上的master分支已支持 Scrapy 1.0

本系列的三篇文章

  1. Python爬虫框架Scrapy教程(1)——入门
  2. Python爬虫框架Scrapy教程(2)—动态可配置
  3. Python爬虫框架Scrapy教程(3)—使用Redis和SQLAlchemy对Scrapy Item去重并存储

参考资料

【愚公系列】《Python网络爬虫从入门到精通》049-了解Scrapy爬虫框架 大家好,欢迎来到《Python网络爬虫从入门到精通》系列教程的第48篇文章。经过前面几十篇的学习,我们已经掌握了使用 requests、BeautifulSoup、Selenium 等工具进行数据抓取的基本方法。然而,随着项目的复杂度提升,这些工具在面对大型、高并发、高可维护性的爬虫任务时,往往力不从心。这时候,专业的爬虫框架——Scrapy,就该登场了。Scrapy 是一个由 Python 编写的、功能强大的异步爬虫框架,它具备高性能、模块化、易扩展等诸多优点,被广泛应用于各种数据采集任务中。 阅读详情

相关推荐

【Python爬虫必备—>Scrapy框架快速入门篇——上】

【Python爬虫必备—>Scrapy框架快速入门篇——上】

孤寒者的博客 65万+

python scrapy框架使用入门

python scrapy框架使用入门

tiegenZ的博客 1128

三大主流交易接口实战指南:XTP、CTP与数字货币API的实盘接入解析

本文深入解析了量化交易系统实现实盘交易的关键环节,聚焦于三大主流交易接口的实战接入。详细介绍了证券领域的XTP、期货领域的CTP以及数字货币交易所API的核心特性、代码封装要点与风控实践,并提供了多市场接口整合的统一架构方案,为开发者打通量化交易的“最后一公里”提供了一份接地气的实战指南。

win55的博客 1379

Djang初学入门

使用Django 创建第一个项目——HelloWorld

诡途的博客 648

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 547

NE555构成多谐振荡器及三角波、正弦波的生成(附工程文件)

NE555构成多谐振荡器及三角波、正弦波的生成 续上一篇:NE555基本原理及相关公式的推导

qq_49979053的博客 5万+

Python 网络爬虫从0到1 (6):Scrapy框架入门最全详解

  前面介绍爬虫分类的时候,我们就对各个网络爬虫工具的优缺点进行了分析。Requests库适合进行轻量化、数据量较小、对速度不敏感的网页爬取;而要进行数据量较大、对网页爬取速度较为敏感的网站爬取,就需要使用Scrapy框架。Scrapy为什么是一个框架而不是库?如何使用这样一个性能更强但又较Requests库复杂的工具进行网站爬取?请看本文讲解。本文涵盖了Scrapy框架开发的几乎所有基础知识以及相关联知识,建议收藏。 Scrapy框架简介   Scrapy框架是一个用于爬取网站内容并进行数据提取的应.

Zheng__Huang的博客 1万+

STM32H743IIT6上LVGL移植实战:从零到触摸屏驱动的完整配置流程

本文详细记录了在STM32H743IIT6高性能MCU上,从零开始移植LVGL图形库到7寸RGB触摸屏的完整实战流程。内容涵盖工程搭建、显示与触摸驱动配置、LVGL核心优化及常见问题排查,重点讲解了如何利用STM32H743的硬件特性(如DMA2D、LTDC)提升GUI性能,为嵌入式GUI开发提供了一份详实的配置指南。

spark7igniter的博客 563

Python爬虫5.1 — scrapy框架简单入门

Python爬虫5.1 — scrapy框架简单入门综述Scrapy 框架Scrapy 框架介绍Scrapy 架构图Scrapy 框架模块功能Scrapy 执行流程Scrapy 安装和文档Scrapy 快速入门创建项目创建爬虫目录介绍使用Scrapy框架爬取糗事百科使用命令创建糗百爬虫爬虫代码解析运行爬虫糗事百科Scrapy爬虫笔记优化实例爬虫数据存储(Scrapy导出器)JsonItemExpo...

让编程改变世界 3418

sap 标准委外和工序委外_SAP PP 工序委外详解

在SAP里有外包和外协两种:外包:指把原材料发出去,扣减库存,然后供应商加工生产,最后再作为成品入库。主要是在MM模块下实现的。对应的英语叫Subcontracting。外协:一般是指某种工序外协,在工艺路线里设置某个工序为外协后,系统自动会产生一个采购订单,一般是指采购某种服务。采购回来后再继续本公司的其他工序。主要是在PP模块下实现的。对应的英语叫Processing。2.当有委外加工的业务流...

weixin_26849971的博客 4581

论文阅读:Universal and Transferable Adversarial Attacks on Aligned Language Models. LLM Attacks

因为“即开即用”的大型语言模型能够生成大量令人反感的内容,近期的工作集中在对这些模型进行对齐,以防止不受欢迎的生成。尽管在规避这些措施方面取得了一些成功——即所谓的针对大型语言模型(LLMs)的“越狱”——这些攻击需要大量的人类智慧,并且在实践中很脆弱。自动对抗性提示生成的尝试也取得了有限的成功。在本文中,我们提出了一种简单有效的攻击方法,可以导致对齐的语言模型生成令人反感的行为。

CSPhD-winston的博客 1418

Python爬虫之Scrapy框架入门1

环境搭建在开始搭建scrapy爬虫的开发环境之前,建议已经安装Anaconda这个python发行版本,这个可以让以后的开发过程中,安装其他的模块环境不至于出现一堆的错误。假定你安装好了Anaconda,也配置好了相应的环境变量,这是你可以用以下的命令安装scrapy框架: 在终端执行下面这条命令 conda install Scrapy 下面是安装过程的截图,是不是很简单2.通过python的包

lexyhp的博客 644

Docker Desktop 从 C 盘迁移到 D 盘的正确方法

本文介绍了三种将Docker数据目录从C盘迁移到D盘的方案。方案1针对WSL2用户,通过导出/导入虚拟磁盘实现迁移;方案2采用软链接方式,适合所有Docker模式;方案3则建议重装Docker到D盘。其中WSL2迁移方案(方案1)最为稳定可靠,推荐使用。文章详细说明了各方案的操作步骤及注意事项,并提供了迁移后常见问题的解决方法,帮助用户彻底解决Docker占用C盘空间的问题。

sg_knight的专栏 2178

5.1-python爬虫之Scrapy框架及入门

系列文章目录 第一章:网络请求 1、爬虫前奏 2、http协议和chrome 3、urllib库 文章目录系列文章目录前言一、Scrapy框架架构1、Scrapy框架介绍:2、Scrapy架构图:3、Scrapy框架模块功能:二、安装和文档三、快速入门1、创建项目:2、目录结构介绍:3、使用Scrapy框架爬取糗事百科段子:4、优化数据存储方式1、JsonItemExporter2、JsonLinesItemExporter5、抓取多个页面四、为什么用Python写爬虫程序五、准备工具 前言 摘录

Nosimper的博客 641

Lammps纳米压痕接触面积—Matlab接触面积计算(两种方法)

Lammps纳米压痕接触面积计算

Rockyoung 5449

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python爬虫框架教程_Python爬虫框架Scrapy教程(1)—入门

最近实验室的项目中有一个需求是这样的,需要爬取若干个(数目不小)网站发布的文章元数据(标题、时间、正文等)。问题是这些网站都很老旧和小众,当然也不可能遵守 Microdata 这类标准。这时候所有网页共用一套默认规则无法保证正确抓取到信息,而每个网页写一份spider代码也不切实际。这时候,我迫切地希望能有一个框架可以通过只写一份spider代码和维护多个网站的爬取规则,就能自动抓取这些网站的信息...

weixin_39959369的博客 145

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python爬虫框架入门_Python爬虫Scrapy框架入门(1)

也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架。从表层来看,与Java框架引入jar包、配置xml或.property文件不同,Scrapy的模式是先用Scrapy建立项目,然后对项目中部分文件进行编辑,从而达到爬取相应网页的目的。控制台->进入目标目录->输入下面指令来建立Scrapy项目:scrapy startproject ...

weixin_36302350的博客 105

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

WINCC7.3破解文件

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

Python爬虫Scrapy框架入门(1)

也许是很少接触python的原因,我觉得是Scrapy框架和以往Java框架很不一样:它真的是个框架。 从表层来看,与Java框架引入jar包、配置xml或.property文件不同,Scrapy的模式是先用Scrapy建立项目,然后对项目中部分文件进行编辑,从而达到爬取相应网页的目的。 控制台->进入目标目录->输入下面指令来建立Scrapy项目: scrapy startpr...

weixin_30391339的博客 119

【Python爬虫必备—>Scrapy框架快速入门篇——上】_scrpy框架教学(1)

🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化学习资料的朋友,可以戳这里获取。

2401_84140384的博客 572

爬虫研究

Scrapy入门教程 Scrapy 0.24 文档

Marshall的专栏 854

廖雪峰python3爬虫教程_Scrapy爬虫框架入门教程(1)——爬取廖雪峰老师的博客...

最近一直在学习scrapy,但是网上关于scrapy的教程实在是太少,能找到的教程大多都是基于py2.7/scrapy0.2以下,甚至很多教程都是互相抄袭,连代码都抄漏了好多,更别提各种缩进错误、变量名错误、导入错误了等等。趁着最近正在撸scrapy的官方教程,想着做几个小爬虫促进一下学习、加深印象,就写下了这篇不算教程的“教程”。我也深知,知乎上大牛太多了,所以恳请各位能多多指教!在你看这个教程...

weixin_39521068的博客 449

scrapy爬虫案例_Scrapy爬虫框架实战案例(适合小白人门)

初识Scrapy开发环境创建项目创建爬虫项目结构图创建Item分析HTML爬取网页开发环境运行平台:Windows 10Python版本:Python 3.6.1Scrapy版本:Scrapy 1.4.0IDE:Sublime text3浏览器:chrome下面我们进入本文的主题,爬取我们的第一个网页“去哪儿”的酒店城市列表,图中红色框框部门。“去哪儿”:http://bnb....

weixin_39703926的博客 1279

Python爬虫----基于Scrapy框架创建网络爬虫案例

基于Scrapy框架创建爬虫工程 本文通过一个比较完整的例子来教你如何使用爬虫框架Scrapy,爬取虎嗅网首页的新闻列表。 这里我们将完成如下几个步骤: ** 创建一个新的Scrapy工程 ** 定义你所需要要抽取的Item对象 编写一个spider来爬取某个网站并提取出所有的Item对象 编写一个Item Pipline来存储提取出来的Item对象 Scrapy使用Python语言编写,如果你对这门语言还不熟,请先去学习下基本知识。 创建Scrapy工程 在任何你喜欢的目录执行如下命令 scrap....

u014044931的博客 1206

[Python]网络爬虫(12):爬虫框架Scrapy的第一个爬虫示例入门教程

爬虫框架Scrapy的第一个爬虫示例入门教程。 我们使用dmoz.org这个网站来作为小抓抓一展身手的对象。 首先先要回答一个问题。 问:把网站装进爬虫里,总共分几步? 答案很简单,四步: 新建项目 (Project):新建一个新的爬虫项目 明确目标(Items):明确你想要抓取的目标 制作爬虫(Spider):制作爬虫开始爬取网页 存储内容(Pipeline):设计管道存储爬取内容 好的,基本流程既然确定了,那接下来就一步一步的完成就可以了。

汪海的实验室 21万+
上一篇: django开发博客(1) 入门
King-23
博客等级 码龄11年 2粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值