
scrapy
近西
你好!我叫丁近西!
展开
-
Scrapy(一)框架
概览在具体的学习scrapy之前,我们先对scrapy的架构做一个简单的了解,之后所有的内容都是基于此架构实现的,在初学阶段只需要简单的了解即可,之后的学习中,你会对此架构有更深的理解。下面是scrapy官网给出的最新的架构图示。基本组件引擎(Engine)引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。调...转载 2019-04-27 19:00:12 · 361 阅读 · 0 评论 -
Scrapy(十二)设置随机IP代理(IPProxy)
当我们需要大量的爬取网站信息时,除了切换User-Agent之外,另外一个重要的方式就是设置IP代理,以防止我们的爬虫被拒绝,下面我们就来演示scrapy如何设置随机IPProxy。设置随机IPProxy同样的你想要设置IPProxy ,首先需要找到可用的IPProxy ,通常情况下,一些代理网站会提供一些免费的ip代理,但是其稳定性和可用性很难得到保证,但是初学阶段,只能硬着头皮去找了,当然...转载 2019-04-29 01:51:00 · 24530 阅读 · 0 评论 -
Scrapy(十一)设置随机User-Agent
User-Agent:使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。如果不设置,很容易导致服务器将你判断为爬虫程序从而拒绝访问。设置随机User-Agentsettings.py文件添加:MY_USER_AGENT = [ "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT ...转载 2019-04-27 18:50:28 · 517 阅读 · 0 评论 -
Scrapy(十)下载器中间件(Downloader Middleware)
下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量、底层的系统。激活Downloader Middleware要激活下载器中间件组件,将其加入到 DOWNLOADER_MIDDLEWARES 设置中。 该设置是一个字典(dict),键为中间件类的路径,值为其中间件的顺序(order)。像下面这样...转载 2019-04-29 01:42:00 · 251 阅读 · 0 评论 -
Scrapy(九)之文件与图片下载
Media PipelineScrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方法和结构(称之为media pipeline)。我们可以使用FilesPipeline和Images Pipeline来保存文件和图片,他们有以下的一些特点:Files Pipeline避免重新...转载 2019-04-28 02:57:08 · 161 阅读 · 0 评论 -
Scrapy(八)settings
Scrapy设定(settings)提供了定制Scrapy组件的方法。你可以控制包括核心(core),插件(extension),pipeline及spider组件。设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace)。Scrapy内置设置下面给出scrapy提供的常用内置设置列表,你可以在settings.py文件里面修改这些设置,以应用或者禁用这些设置...转载 2019-04-27 20:36:13 · 213 阅读 · 0 评论 -
Scrapy(七)Item Pipeline
在之前的Scrapy学习篇(四)之数据的存储的章节中,我们其实已经使用了Item Pipeline,那一章节主要的目的是形成一个笼统的认识,知道scrapy能干些什么,但是,为了形成一个更加全面的体系,我们在这一章节中,将会单独介绍Item Pipeline,方便以后你自定义你的item pipeline。当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会...转载 2019-04-27 20:24:14 · 225 阅读 · 0 评论 -
Scrapy(六)之Selector选择器
当我们取得了网页的response之后,最关键的就是如何从繁杂的网页中把我们需要的数据提取出来,python从网页中提取数据的包很多,常用的有下面的几个:BeautifulSoup它基于HTML代码的结构来构造一个Python对象, 对不良标记的处理也非常合理,但是速度上有所欠缺。lxml是一个基于 ElementTree (不是Python标准库的一部分)的python化的XML解析库...转载 2019-04-27 20:03:54 · 272 阅读 · 0 评论 -
Scrapy(五)Spiders
SpidersSpider类定义了如何爬取某个网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。简而言之,Spider就是你定义爬取的动作及分析某个网页(或者是有些网页)的地方。对spider来说,爬取的循环类似如下:以初始的URL初始化Request,并设置回调函数。当该request下载完毕并返回时,将生成response,并作为参数传...转载 2019-04-27 19:49:46 · 213 阅读 · 0 评论 -
Scrapy(四)数据存储
上一篇中,我们简单的实现了一个博客首页信息的爬取,并在控制台输出,但是,爬下来的信息自然是需要保存下来的。这一篇主要是实现信息的存储,我们以将信息保存到文件和mongo数据库为例,学习数据的存储,依然是以博客首页信息为例。编写爬虫修改items.py文件来定义我们的itemItem 是保存爬取到的数据的容器;其使用方法和python字典类似。虽然你也可以在Scrapy中直接使用dict,但是...转载 2019-04-27 19:32:47 · 315 阅读 · 0 评论 -
Scrapy(三)创建项目
创建项目创建项目是爬取内容的第一步,之前已经讲过,Scrapy通过scrapy startproject <project_name>命令来在当前目录下创建一个新的项目。下面我们创建一个爬取博客园(‘https://www.cnblogs.com/’)文章信息的项目scrapy startproject cnblog其中cnblog是你的项目的名字,可以自己定义。其目录结构如...转载 2019-04-27 19:20:14 · 232 阅读 · 0 评论 -
Scrapy(二)常用命令行
简介Scrapy是通过Scrapy命令行工具进行控制的,包括创建新的项目,爬虫的启动,相关的设置,Scrapy提供了两种内置的命令,分别是全局命令和项目命令,顾名思义,全局命令就是在任意位置都可以执行的命令,而项目命令只有在你新创建了项目之后,在项目目录中才可以执行的命令。在这里,简单的介绍一些常用的命令。全局命令startproject语法: scrapy startproject &...原创 2019-04-27 19:07:16 · 407 阅读 · 0 评论 -
Scrapy(十三)scrapy-splash
之前我们学习的内容都是抓取静态页面,每次请求,它的网页全部信息将会一次呈现出来。 但是,像比如一些购物网站,他们的商品信息都是js加载出来的,并且会有ajax异步加载。像这样的情况,直接使用scrapy的Request请求是拿不到我们想要的信息的,解决的方法就是使用scrapy-splash。scrapy-splash加载js数据是基于Splash来实现的,Splash是一个Javascript...转载 2019-04-29 01:59:36 · 370 阅读 · 0 评论