Scrapy
sdulsj
这个作者很懒,什么都没留下…
展开
-
Scrapy笔记(1)- 入门篇
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(比如Web Services)或者通用的网络爬虫。Scrapy也能帮你实现高阶的爬虫框架,比如爬取时的网站认证、内容的分析处理、重复抓取、分布式爬取等等很复杂的事。转载 2016-10-31 17:35:52 · 1673 阅读 · 0 评论 -
Scrapy抓取在不同级别Request之间传递参数
先来看一下需求,以抓取简书用户信息为例:用户主页左侧显示的信息:(用户主要信息)用户昵称(nickname)关注数(subs)粉丝(fans)文章(articles)字数(words)以上数据从用户首页可以获取(/latest_articles),其他页面(/timeline, /followers...)都有这些数据。用户主页可以得到的数据我们转载 2016-10-31 18:51:20 · 1981 阅读 · 0 评论 -
Scrapy笔记(12)- 抓取动态网站
前面我们介绍的都是去抓取静态的网站页面,也就是说我们打开某个链接,它的内容全部呈现出来。但是如今的互联网大部分的web页面都是动态的,经常逛的网站例如京东、淘宝等,商品列表都是js,并有Ajax渲染,下载某个链接得到的页面里面含有异步加载的内容,这样再使用之前的方式我们根本获取不到异步加载的这些网页内容。使用Javascript渲染和处理网页是种非常常见的做法,如何处理一个大量使用Javasc转载 2016-10-31 18:43:21 · 5602 阅读 · 2 评论 -
Scrapy笔记(11)- 模拟登录
有时候爬取网站的时候需要登录,在Scrapy中可以通过模拟登录保存cookie后再去爬取相应的页面。这里我通过登录github然后爬取自己的issue列表来演示下整个原理。要想实现登录就需要表单提交,先通过浏览器访问github的登录页面https://github.com/login,然后使用浏览器调试工具来得到登录时需要提交什么东西。我这里使用chrome浏览器的调试工具,F12打转载 2016-10-31 18:38:01 · 11970 阅读 · 2 评论 -
Scrapy笔记(10)- 动态配置爬虫
有很多时候我们需要从多个网站爬取所需要的数据,比如我们想爬取多个网站的新闻,将其存储到数据库同一个表中。我们是不是要对每个网站都得去定义一个Spider类呢?其实不需要,我们可以通过维护一个规则配置表或者一个规则配置文件来动态增加或修改爬取规则,然后程序代码不需要更改就能实现多个网站爬取。要这样做,我们就不能再使用前面的scrapy crawl test这种命令了,我们需要使用编程的方式运行S转载 2016-10-31 18:31:23 · 8380 阅读 · 0 评论 -
Scrapy笔记(9)- 部署
本篇主要介绍两种部署爬虫的方案。如果仅仅在开发调试的时候在本地部署跑起来是很容易的,不过要是生产环境,爬虫任务量大,并且持续时间长,那么还是建议使用专业的部署方法。主要是两种方案:Scrapyd 开源方案Scrapy Cloud 云方案部署到ScrapydScrapyd是一个开源软件,用来运行蜘蛛爬虫。它提供了HTTP API的服务器,还能运行和监控Scrapy的蜘蛛要部署爬虫转载 2016-10-31 18:26:38 · 3632 阅读 · 0 评论 -
Scrapy笔记(8)- 文件与图片
Scrapy为我们提供了可重用的item pipelines为某个特定的Item去下载文件。通常来说你会选择使用Files Pipeline或Images Pipeline。这两个管道都实现了:避免重复下载可以指定下载后保存的地方(文件系统目录中,Amazon S3中)Images Pipeline为处理图片提供了额外的功能:将所有下载的图片格式转换成普通的JPG并使用RG转载 2016-10-31 18:23:55 · 4046 阅读 · 0 评论 -
Scrapy笔记(7)- 内置服务
Scrapy使用Python内置的的日志系统来记录事件日志。日志配置LOG_ENABLED = trueLOG_ENCODING = "utf-8"LOG_LEVEL = logging.INFOLOG_FILE = "log/spider.log"LOG_STDOUT = TrueLOG_FORMAT = "%(asctime)s [%(name)s] %(levelname)s:转载 2016-10-31 18:16:44 · 1385 阅读 · 0 评论 -
Scrapy笔记(6)- Item Pipeline
当一个item被蜘蛛爬取到之后会被发送给Item Pipeline,然后多个组件按照顺序处理这个item。每个Item Pipeline组件其实就是一个实现了一个简单方法的Python类。他们接受一个item并在上面执行逻辑,还能决定这个item到底是否还要继续往下传输,如果不要了就直接丢弃。使用Item Pipeline的常用场景:清理HTML数据验证被抓取的数据(检查item是否包转载 2016-10-31 18:12:38 · 9131 阅读 · 0 评论 -
Scrapy笔记(5)- Item详解
Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,但是Python中字典缺少结构,在大型爬虫系统中很不方便。Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。定义Item定义Item非常简单,只需要继承scrapy.Item类,并将所有字段都定义为scrapy.Field类型即可import scrapy转载 2016-10-31 18:07:15 · 29780 阅读 · 1 评论 -
Scrapy笔记(4)- Selector详解
在你爬取网页的时候,最普遍的事情就是在页面源码中提取需要的数据,我们有几个库可以帮你完成这个任务:BeautifulSoup是python中一个非常流行的抓取库,它还能合理的处理错误格式的标签,但是有一个唯一缺点就是:它运行很慢。lxml是一个基于ElementTree的XML解析库(同时还能解析HTML),不过lxml并不是Python标准库而Scrapy实现了自己的数据提取机制,它转载 2016-10-31 17:58:52 · 17467 阅读 · 0 评论 -
Scrapy笔记(3)- Spider详解
Spider是爬虫框架的核心,爬取流程如下:先初始化请求URL列表,并指定下载后处理response的回调函数。初次请求URL通过start_urls指定,调用start_requests()产生Request对象,然后注册parse方法作为回调在parse回调中解析response并返回字典,Item对象,Request对象或它们的迭代对象。Request对象还会包含回调函数,之后Scr转载 2016-10-31 17:55:42 · 1986 阅读 · 0 评论 -
Scrapy笔记(2)- 完整示例
这篇文章我们通过一个比较完整的例子来教你使用Scrapy,我选择爬取虎嗅网首页的新闻列表。这里我们将完成如下几个步骤:创建一个新的Scrapy工程定义你所需要要抽取的Item对象编写一个spider来爬取某个网站并提取出所有的Item对象编写一个Item Pipline来存储提取出来的Item对象Scrapy使用Python语言编写,如果你对这门语言还不熟,请先去学习下基本知识。转载 2016-10-31 17:48:41 · 2553 阅读 · 0 评论 -
设置scrapyd为系统后台服务及系统启动项
whereis scrapyd一、设置为系统后台服务1、新建文件/etc/init.d/scrapydvi /etc/init.d/scrapydsudo chmod 755 /etc/init.d/scrapyd#!/bin/bash# chkconfig: 2345 20 80# description: SrapydPORT=6800HOME="/var/scrapyd"BIN...转载 2017-12-08 10:19:21 · 4890 阅读 · 0 评论