- 博客(179)
- 资源 (3)
- 收藏
- 关注
原创 关于“淘宝爆款”的数据抓取与数据分析
数据爬取爬取对象:淘宝“连衣裙 夏”的搜索结果。爬取对象的选择分析我在文章中也有提及。工具:Scrapy。Repository内容即为当时实现的代码。数据分析分析内容可见此Repository的Wiki。也可见上面问题链接。工具:ipython & matplotlib。分析内容分析内容放在了Wiki中,链接:https://github.com/you
2014-07-06 09:44:02 29128 5
原创 Scrapy研究探索(七)——如何防止被ban之策略大集合
话说在尝试设置download_delay小于1,并且无任何其他防止被ban的策略之后,我终于成功的被ban了。如下:敌退我进,敌攻我挡。本篇博客主要研究使用防止被ban的几大策略以及在scrapy中的使用。1.策略一:设置download_delay这个在之前的教程中已经使用过(http://blog.csdn.net/u012150179/article
2014-06-29 10:45:54 43525 3
原创 Git使用之——冲突解决一(git merge conflict)
由于在local做了改动,在执行git merge upstream/master出现conflict。现总结解决方法:首先参考:http://yodalee.blogspot.com/2013/03/vimdiffgit-merge-conflict_28.html使用vimdiff來解決git merge conflict 最近同時家裡用筆電跟辦公室用桌電,在兩個地方使用git
2013-11-02 00:10:17 213182 5
原创 已将GitHub scrapy-redis库升级,使其兼容最新版本Scrapy
1.代码升级之前的问题:随着Scrapy库的流行,scrapy-redis作为使用redis支持分布式爬取的工具,也不断的被大家发现。但是,使用过程中你会发现的问题是由于scrapy-redis是基于较老版本的Scrapy,所以当你使用的是新版本的Scrapy时,不可避免的会出现警告,甚至错误。关于这个问题,我总结之后在scrapy-redis库中提了出来并开了issue和作者做了
2014-09-07 16:19:31 6973 2
原创 关于CSDN几点用户体验较差的功能(收藏夹和草稿箱)
1. 收藏夹不去重。同一专栏或博客每点一次“收藏”都会增加到收藏夹中。收藏内容一般有两种形式:(1)专栏收藏。(2)博客文章收藏。对于前者,虽然专栏的文章数量可能是不断在增加的,但是专栏地址是不变的。后者类似。由于收藏是以“标题+链接”形式实现的。那么通过文章/专栏地址进行去重是可达到的。2. 草稿箱编辑不方便。CSDN博文的保存是通过按钮“立即保存”实现的,好像没
2014-08-17 21:53:44 5618
转载 程序员能力矩阵
注意:每个层次的知识都是渐增的,位于层次n,也蕴涵了你需了解所有低于层次n的知识。计算机科学 Computer Science 2n (Level 0)n2 (Level 1)n (Level 2)log(n) (Level 3)Comments数据结构不知道数组和链表的差异能够解释和使用数
2014-08-05 12:30:55 4159
原创 一淘搜索之网页抓取系统分析与实现(4)- 实现&总结
以一淘搜索的crawler为核心展开的分析到此基本结束了,除了django和mysql部分没有涉及,其它部分都进行了test,尤其是围绕crawler,所展开的分析和实现主要有:1. 分布式crawler与分布式pipeline处理。使用scrapy+redis实现,用到了scrapy+scrapy-redis。关于自己相关代码也在fork的repo做了探索与实现。2. j
2014-07-30 20:19:23 5148 1
原创 一淘搜索之网页抓取系统分析与实现(3)—scrapy+webkit & mysql+django
结构图scrapy+webkit:如结构图③。scrapy不能实现对javascript的处理,所以需要webkit解决这个问题。开源的解决方案可以选择scrapinghub的scrapyjs或者功能更强大的splash.关于scrapy+webkit的使用后期进行分析。scrapy+django:如结构图④。django实现的配置界面主要是对抓取系统的管理和配置,
2014-07-28 11:42:58 7597 2
原创 一淘搜索之网页抓取系统分析与实现(2)—redis + scrapy
1.scrapy+redis使用(1)应用这里redis与scrapy一起,scrapy作为crawler,而redis作为scrapy的调度器。如架构图中的②所示。图1 架构图(2)为什么选择redisredis作为调度器的实现仍然和其特性相关,可见《一淘搜索之网页抓取系统分析与实现(1)——redis使用》(url)中关于redis的分析。2.redis
2014-07-28 11:36:38 6877
原创 一淘搜索之网页抓取系统分析与实现(1)—redis使用
原创文章,链接:1.redis使用(1)应用redis在抓取系统中主要承担两方面的责任,其一是作为链接存储数据库,其二是与ceawler一起并作为crawler的调度器。后者将在“scrapr+redis(url)”中阐述。(2)为什么选择redisredis的特性体现在“内存数据库”和“KV”存储方式上,前者决定其性能,后者决定其存储内容的易于组织性。reidis的使
2014-07-28 11:31:08 6541
原创 怎样编写scrapy扩展
原创文章,链接:在scrapy使用过程中,很多情况下需要根据实际需求定制自己的扩展,小到实现自己的pipelines,大到用新的scheduler替换默认的scheduler。扩展可以按照是否需要读取crawler大致分为两种,对于不需要读取的,比如pipelines的编写,只需要实现默认的方法porcess_item。需要读取的,如scheduler的编写又存在另外的方式。
2014-07-28 11:14:19 8178 1
原创 scrapy-redis源码分析
原创文章,链接:(I) connection.py负责根据setting中配置实例化redis连接。被dupefilter和scheduler调用,总之涉及到redis存取的都要使用到这个模块。(II) dupefilter.py负责执行requst的去重,实现的很有技巧性,使用redis的set数据结构。但是注意scheduler并不使用其中用于在这个模块中实现的dupe
2014-07-28 11:02:33 12398 9
原创 scrapy爬取深度设置
通过在settings.py中设置DEPTH_LIMIT的值可以限制爬取深度,这个深度是与start_urls中定义url的相对值。也就是相对url的深度。例如定义url为:http://www.domz.com/game/,DEPTH_LIMIT=1那么限制爬取的只能是此url下一级的网页。如图:
2014-07-28 10:55:05 18401 1
原创 scrapy-redis实现爬虫分布式爬取分析与实现
一 scrapy-redis实现分布式爬取分析所谓的scrapy-redis实际上就是scrapy+redis其中对redis的操作采用redis-py客户端。这里的redis的作用以及在scrapy-redis的方向我在自己fork的repository(链接:)已经做了翻译(README.rst)。在前面一篇文章中我已经借助两篇相关文章分析了使用redis实现爬虫分布式的中心。归结起来
2014-07-24 20:21:19 34913 5
原创 redis研究笔记
一. redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes http
2014-07-24 08:07:58 4768
转载 小米开源
作为一款Android系的产品,小米手机天然具有开源的基因。小米的MIUI系统,被认为是利用开源Android操作系统的成功典范。最新的小米路由器,也使用了路由器端著名的开源OpenWRT系统。除此之外,小米在日志框架、服务框架、HTTP Web框架、消息队列、搜索、分布式缓存、存储业务、监控报警、数据处理等多个领域,都使用了开源技术。小米首席架构师崔宝秋在谈到“开源”的时候曾说:“拥抱开
2014-07-23 10:23:01 8783
原创 scrapy-redis实现scrapy分布式爬取分析
(1)在“http://www.zhihu.com/question/20899988”中,提到的:“那么,假设你现在有100台机器可以用,怎么用python实现一个分布式的爬取算法呢?我们把这100台中的99台运算能力较小的机器叫作slave,另外一台较大的机器叫作master,那么回顾上面代码中的url_queue,如果我们能把这个queue放到这台master机器上,
2014-07-22 20:19:51 8353
原创 使用Git分支协同开发
原创,文章链接:大型软件项目开发中,多分支的使用不仅能够并行开发多模块任务,也避免了Bug修正时引入新功能代码或是误删Bug代码造成以修复问题重现,更清晰的‘组织’项目的开发。新建的分支一般都属于以下三个范畴内:发布分支(Bugfix分支)、特性分支和卖主分支。 一、发布分支发布分支主要用作对之前提交代码的Bug修正,使修正过程和主线功能开发能够并行开展。 二、特性分支
2014-07-19 18:44:43 6871 1
原创 智能指针tr1::shared_ptr、boost::shared_ptr使用
对于tr1::shared_ptr在安装vs同时会自带安装,但是版本较低的不存在。而boost作为tr1的实现品,包含“AlgorithmsBroken Compiler WorkaroundsConcurrent ProgrammingContainersCorrectness and TestingData StructuresDomain SpecificFu
2014-07-19 17:57:29 4925 1
转载 为什么C++编译器不能支持对模板的分离式编译
转自:首先,一个编译单元(translation unit)是指一个.cpp文件以及它所#include的所有.h文件,.h文件里的代码将会被扩展到包含它的.cpp文件里,然后编译器编译该.cpp文件为一个.obj文件(假定我们的平台是win32),后者拥有PE(Portable Executable,即windows可执行文件)文件格式,并且本身包含的就已经是二进制码,但是不一定能够执行,因
2014-07-15 14:45:19 3761
转载 reStructuredText
reStructuredText 简明教程060724 17:58作者:Laurence邮箱:2999am@gmail.comID:Kardinal @ Ubuntu.org.cn论坛版权:This document has been placed in the public domai
2014-07-13 21:54:18 13578
原创 读《搜索引擎技术基础》
为了更深入的了解与应用爬虫,花了一些时间读了清华大学和百度联合出版的《搜索引擎技术基础》。一直没有整理过这种专业性或技术类别的书,是因为涉及到的内容太多,不懂得也太多,根本整理不出来不如直接看书。但是对于这本书来说,本着了解的态度看,自然没有深究其中的某些晦涩的内容。下面以写下来的方式贯穿下自己的阅读所得。整本书基本也是从搜索引擎的系统架构展开,讲述各个部分内容,在最后也涉及到了一些很有意
2014-07-10 21:57:10 5207
转载 20个博客SEO优化技巧
SEO优化也就是搜索引擎优化,搜索引擎优化也就是博客内容被搜索引擎收录及优先排序,以此增加博客的点击率和曝光度,最终提升博客的综合能力。写博客的人,内容不仅要对用户友好,让大部分人都能看懂,而且也要对搜索引擎友好。这里主要介绍下卢松松常用的博客SEO优化技巧。1:博客要经常保持更新,文字始终紧紧围绕关键字,围绕网站主题。2:SEO优化重点以文章内容页优化为主。3:适当给每个
2014-07-08 23:17:39 5092
原创 matplotlib研究
最近在研究Scrapy(链接)过程中抓取并分析了有关淘宝爆款的数据(分析:代码:),在分析可视化的过程中使用到了matplotlib,最初对其认识还是在《使用python进行数据分析》一书中。matplotlib作为一个依托与Numpy并使用python编写的2D会图库(也包含3D图形的绘制),受MATLAB启发,并可以以python化、面向对象方式使用。他设计的哲学是用较少的代码绘制出需
2014-07-08 14:09:45 3691
转载 淘宝技术牛p博客整理
转自淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为Java分会、C/C++分会、算法分会:数据分会:UED分会、测试分会、系统分会七个分会。淘宝技术委员会的愿景是淘宝成为技术人才向往的乐土,高级技术人员的发源地;技术委员会的使命是帮助淘宝建立业界一流的技术团队。同时,技术委员会也是技术人员间交流技术和想法的一个平台。淘宝技术博客:数据分会 淘
2014-07-07 17:48:01 7953
原创 Git协同工作之——非快进式推送
非快进推送(non-fast-forwardupdates)在远程版本库和当前版本库内容不一致时推送所致,引起原因一般为在多成员协同工作下,其他用户在当前用户版本库上次commit和本次commit之间向远程版本库执行了推送所致。出现非快进式推送的日志:图1这是我们可以查看远程版本库和当前版本库的commit哈希值。进入到.git目录下查看本地版本库最新commit
2014-06-30 21:42:07 6817 1
原创 Scrapy研究探索(六)——自动爬取网页之II(CrawlSpider)
一.目的。在教程(二)(http://blog.csdn.net/u012150179/article/details/32911511)中使用基于Spider实现了自己的w3cschool_spider,并在items.py中定义了数据结构,在pipelines.py中实现获得数据的过滤以及保存。但是以上述方法只能爬取start_url列表中的网页,而网络爬虫如google等搜索引擎
2014-06-26 21:31:17 49220 4
转载 PYTHON风格规范——Google 开源项目风格指南
Python风格规范分号Tip不要在行尾加分号, 也不要用分号将两条命令放在同一行.行长度Tip每行不超过80个字符例外:长的导入模块语句注释里的URL不要使用反斜杠连接行.Python会将 圆括号, 中括号和花括号中的行隐式的连接起来 , 你可以利用这个特点. 如果需要, 你可以在表达式外围增加一对额
2014-06-26 08:49:58 5849
原创 Scrapy研究探索(三)——Scrapy核心架构与代码运行分析
学习曲线总是这样,简单例子“浅尝”,在从理论+实践慢慢攻破。理论永远是基础,切记“勿在浮沙筑高台”。一. 核心架构关于核心架构,在官方文档中阐述的非常清晰,地址:http://doc.scrapy.org/en/latest/topics/architecture.html。英文有障碍可查看中文翻译文档,笔者也参与了Scraoy部分文档的翻译,我的翻译GitHub地址:http
2014-06-25 16:37:11 24166 2
原创 scrapy研究探索(二)——爬w3school.com.cn
下午被一个问题困扰了好一阵,最终使用另一种方式解决。 开始教程二,关于Scrapy安装、介绍等请移步至教程(一)(http://blog.csdn.net/u012150179/article/details/32343635)。 在开始之前假设你已经成功安装一切所需,整怀着一腔热血想要抓取某网站。一起来have a try。 1. 前期基础准备。 Oh,不能在准备了,直接来。 (1)
2014-06-21 09:50:13 49042 21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人