首页
学习
活动
专区
工具
TVP
发布

进击的Coder

专栏作者
552
文章
1254568
阅读量
199
订阅数
三行代码,轻松实现 Scrapy 对接新兴爬虫神器 Playwright!
前段时间发布了一篇文章介绍一个新兴的类似 Selenium、Pyppeteer 的自动化爬取工具,叫做 Playwright,文章见:强大易用!新一代爬虫利器 Playwright 的介绍
崔庆才
2022-01-05
2.3K0
干货!爬虫框架 Feapder 和 Scrapy 的对比分析
scrapy 自带的重试中间件只支持请求重试,解析函数内异常或者数据入库异常不会重试,但爬虫在请求数据时,往往会有一些意想不到的页面返回来,若我们解析异常了,这条任务岂不是丢了。
崔庆才
2021-10-08
1.7K0
如何改造 Scrapy 从而实现多网站大规模爬取?
Scrapy 框架默认是用来开发定向爬虫的。一般情况下,在 spiders 文件夹下面的一个.py 文件对应了一个网站的爬取。
崔庆才
2020-10-30
1.8K0
Scrapy 和 Pyppeteer 更优雅的对接方案
现在越来越多的网页都已经演变为 SPA 页面,而且越来越多的网站采用了各种 JavaScript 混淆和加密技术,这使得 JavaScript 逆向难度变得很大,Ajax 接口模拟爬取也变得越发困难,因此模拟浏览器爬取不失为一个不错的爬取方案。
崔庆才
2020-07-21
2.8K1
分布式爬虫原理之Scrapy分布式实现
接下来,我们会利用Scrapy-Redis来实现分布式的对接。 一、准备工作 请确保已经成功实现了Scrapy新浪微博爬虫,Scrapy-Redis库已经正确安装。 二、搭建Redis服务器 要实现分布式部署,多台主机需要共享爬取队列和去重集合,而这两部分内容都是存于Redis数据库中的,我们需要搭建一个可公网访问的Redis服务器。 推荐使用Linux服务器,可以购买阿里云、腾讯云、Azure等提供的云主机,一般都会配有公网IP,具体的搭建方式可以参考第1章中Redis数据库的安装方式。 Redi
崔庆才
2018-06-25
1.6K0
分布式爬虫的部署之Scrapyd分布式部署
分布式爬虫完成并可以成功运行了,但是有个环节非常烦琐,那就是代码部署。 我们设想下面的几个场景。 如果采用上传文件的方式部署代码,我们首先将代码压缩,然后采用SFTP或FTP的方式将文件上传到服务器,之后再连接服务器将文件解压,每个服务器都需要这样配置。 如果采用Git同步的方式部署代码,我们可以先把代码Push到某个Git仓库里,然后再远程连接各台主机执行Pull操作,同步代码,每个服务器同样需要做一次操作。 如果代码突然有更新,那我们必须更新每个服务器,而且万一哪台主机的版本没控制好,这可能会影响整
崔庆才
2018-06-25
1.5K0
分布式爬虫的部署之Scrapyd-Client的使用
这里有现成的工具来完成部署过程,它叫作Scrapyd-Client。本节将简单介绍使用Scrapyd-Client部署Scrapy项目的方法。 一、准备工作 请先确保Scrapyd-Client已经正确安装。 二、Scrapyd-Client 的功能 Scrapyd-Client为了方便Scrapy项目的部署,提供如下两个功能。 将项目打包成Egg文件。 将打包生成的Egg文件通过addversion.json接口部署到Scrapyd上。 Scrapyd-Client帮我们把部署全部实现了,我们不
崔庆才
2018-06-25
9930
分布式爬虫的部署之Scrapyd对接Docker
我们使用了Scrapyd-Client成功将Scrapy项目部署到Scrapyd运行,前提是需要提前在服务器上安装好Scrapyd并运行Scrapyd服务,而这个过程比较麻烦。如果同时将一个Scrapy项目部署到100台服务器上,我们需要手动配置每台服务器的Python环境,更改Scrapyd配置吗?如果这些服务器的Python环境是不同版本,同时还运行其他的项目,而版本冲突又会造成不必要的麻烦。 所以,我们需要解决一个痛点,那就是Python环境配置问题和版本冲突解决问题。如果我们将Scrapyd直接打
崔庆才
2018-06-25
1.8K0
分布式爬虫的部署之Scrapyd批量部署
我们在上一节实现了Scrapyd和Docker的对接,这样每台主机就不用再安装Python环境和安装Scrapyd了,直接执行一句Docker命令运行Scrapyd服务即可。但是这种做法有个前提,那就是每台主机都安装Docker,然后再去运行Scrapyd服务。如果我们需要部署10台主机的话,工作量确实不小。 一种方案是,一台主机已经安装好各种开发环境,我们取到它的镜像,然后用镜像来批量复制多台主机,批量部署就可以轻松实现了。 另一种方案是,我们在新建主机的时候直接指定一个运行脚本,脚本里写好配置各种环
崔庆才
2018-06-25
9040
Scrapy框架的使用之Scrapy对接Splash
在上一节我们实现了Scrapy对接Selenium抓取淘宝商品的过程,这是一种抓取JavaScript动态渲染页面的方式。除了Selenium,Splash也可以实现同样的功能。本节我们来了解Scrapy对接Splash来进行页面抓取的方式。 一、准备工作 请确保Splash已经正确安装并正常运行,同时安装好Scrapy-Splash库。 二、新建项目 首先新建一个项目,名为scrapysplashtest,命令如下所示: scrapy startproject scrapysplashtest 新
崔庆才
2018-06-25
2.2K0
Scrapy框架的使用之Scrapy通用爬虫
通过Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,比如爬取各大媒体的新闻信息,多个Spider则可能包含很多重复代码。 如果我们将各个站点的Spider的公共部分保留下来,不同的部分提取出来作为单独的配置,如爬取规则、页面解析方式等抽离出来做成一个配置文件,那么我们在新增一个爬虫的时候,只需要实现这些网站的爬取规则和提取规则即可。 本节我们就来探究一下Scrapy通用爬虫的实现方法。 一、CrawlSpider 在实现通用爬虫之前,我们需要先了解一下CrawlSpider
崔庆才
2018-06-25
2.4K0
Scrapy框架的使用之Scrapyrt的使用
Scrapyrt为Scrapy提供了一个调度的HTTP接口。有了它我们不需要再执行Scrapy命令,而是通过请求一个HTTP接口即可调度Scrapy任务,我们就不需要借助于命令行来启动项目了。如果项目是在远程服务器运行,利用它来启动项目是个不错的选择。 一、本节目标 我们以本章Scrapy入门项目为例来说明Scrapyrt的使用方法,项目源代码地址为:https://github.com/Python3WebSpider/ScrapyTutorial。 二、准备工作 请确保Scrapyrt已经正确安装
崔庆才
2018-06-25
2.1K0
Scrapy框架的使用之Scrapy爬取新浪微博
前面讲解了Scrapy中各个模块基本使用方法以及代理池、Cookies池。接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下Scrapy的大规模爬取。 一、本节目标 本次爬取的目标是新浪微博用户的公开基本信息,如用户昵称、头像、用户的关注、粉丝列表以及发布的微博等,这些信息抓取之后保存至MongoDB。 二、准备工作 请确保前文所讲的代理池、Cookies池已经实现并可以正常运行,安装Scrapy、PyMongo库。 三、爬取思路 首先我们要实现用户的大规模爬取。这里采用的爬取方式是,以微博的几
崔庆才
2018-06-25
1.7K0
分布式爬虫原理之分布式爬虫原理
我们在前面已经实现了Scrapy微博爬虫,虽然爬虫是异步加多线程的,但是我们只能在一台主机上运行,所以爬取效率还是有限的,分布式爬虫则是将多台主机组合起来,共同完成一个爬取任务,这将大大提高爬取的效率
崔庆才
2018-06-25
1.3K0
Scrapy框架的使用之Spider的用法
在Scrapy中,要抓取网站的链接配置、抓取逻辑、解析逻辑里其实都是在Spider中配置的。在前一节实例中,我们发现抓取逻辑也是在Spider中完成的。本节我们就来专门了解一下Spider的基本用法。 1. Spider运行流程 在实现Scrapy爬虫项目时,最核心的类便是Spider类了,它定义了如何爬取某个网站的流程和解析方式。简单来讲,Spider要做的事就是如下两件: 定义爬取网站的动作; 分析爬取下来的网页。 对于Spider类来说,整个爬取循环过程如下所述: 以初始的URL初始化Reque
崔庆才
2018-06-25
6140
Scrapy框架的使用之Downloader Middleware的用法
Downloader Middleware即下载中间件,它是处于Scrapy的Request和Response之间的处理模块。我们首先来看看它的架构,如下图所示。 Scheduler从队列中拿出一个
崔庆才
2018-06-25
2.5K0
Scrapy框架的使用之Spider Middleware的用法
Spider Middleware是介入到Scrapy的Spider处理机制的钩子框架。我们首先来看看它的架构,如下图所示。 当Downloader生成Response之后,Response会被发送
崔庆才
2018-06-25
1.5K0
Scrapy框架的使用之Item Pipeline的用法
Item Pipeline是项目管道,本节我们详细了解它的用法。 首先我们看看Item Pipeline在Scrapy中的架构,如下图所示。 图中的最左侧即为Item Pipeline,它的调用发生
崔庆才
2018-06-25
7K1
Scrapy框架的使用之Scrapy对接Selenium
Scrapy抓取页面的方式和requests库类似,都是直接模拟HTTP请求,而Scrapy也不能抓取JavaScript动态渲染的页面。在前文中抓取JavaScript渲染的页面有两种方式。一种是分析Ajax请求,找到其对应的接口抓取,Scrapy同样可以用此种方式抓取。另一种是直接用Selenium或Splash模拟浏览器进行抓取,我们不需要关心页面后台发生的请求,也不需要分析渲染过程,只需要关心页面最终结果即可,可见即可爬。那么,如果Scrapy可以对接Selenium,那Scrapy就可以处理任何
崔庆才
2018-06-25
2.3K0
Scrapy框架的使用之Scrapy框架介绍
Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬
崔庆才
2018-06-25
8090
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档