Python爬虫
记录我的Python爬虫征程!
九茶
这个作者很懒,什么都没留下…
展开
-
websocket 爬虫
前言有些网站为了追求数据的实时更新,很多时候会采用 websocket 的方式,例如股票交易数据、数据货币交易平台等。关于websocket的机制,网上不乏相关资料。但关于websocket的爬虫文章,还是比较少的。所以特地写此文章做个分享,希望对他人有所帮助。 正文1、 首先要意识到,websocket和普通的HTTP请求有些不同。websocket的方式:用户浏览器(客户...原创 2018-08-08 13:05:28 · 9298 阅读 · 10 评论 -
爬虫应对银行安全控件
背景之前有个业务需求,抓取用户在银行的个人信息(经授权)。但由于安全控件的原因,程序在密码框无法输入,导致无法抓取。银行流水,对网贷平台而言这是非常重要的征信数据。我所知道的,就有好些爬虫在为安全控件的问题头疼,甚至有专门的外包,寻求解决方案。我做过各种检索和尝试,发现大部分方法都是无效的。但银行征信数据的采集,确实有些平台在做,那就说明这个问题能破,那也就没什么好担心的了,静下心一点...原创 2018-06-22 12:09:46 · 11828 阅读 · 6 评论 -
图形解锁验证码破解(附Python代码)
前言:爬虫开源死得快,新浪微博又改策略了。在去年的这个时候,微博还是没什么限制的。2016年12月我将新浪微博爬虫的代码作了一次更新,并将文章转到了知乎,爬微博的人似乎从那个时候开始多了许多。也许是这个缘故,微博开始对IP设了限制,接着禁了原来免验证码的登录方式,现在将weibo.cn的登录途径也关了,weibo.cn采用m.weibo.cn的登录,登录过程中可能出现图形解锁验证码。这种验证码比较少原创 2017-05-01 20:31:02 · 25319 阅读 · 13 评论 -
爬虫-根据公司名抓取相关员工的linkedin数据
前言:几个月前,应朋友要求,写了一个linkedin爬虫,难度不大,但功能还算好玩,所以就整理了一下放出来了。代码见Github:LinkedinSpider。 爬虫功能:输入一个公司名称,抓取相关员工的linkedin数据,字段见下方截图。 正文:先来说一下linkedin的限制:不登录的状态,不能进行搜索,但是可以查看某个用户的linkedin信息(不够全)。linkedin可以搜用户(最原创 2017-05-01 14:04:30 · 40321 阅读 · 14 评论 -
分布式多爬虫系统——架构设计
前言:在爬虫的开发过程中,有些业务场景需要同时抓取几百个甚至上千个网站,此时就需要一个支持多爬虫的框架。在设计时应该要注意以下几点:代码复用,功能模块化。如果针对每个网站都写一个完整的爬虫,那其中必定包含了许多重复的工作,不仅开发效率不高,而且到后期整个爬虫项目会变得臃肿、难以管理。易扩展。多爬虫框架,这最直观的需求就是方便扩展,新增一个待爬的目标网站,我只需要写少量 必要的内容(如抓取规则、解原创 2017-02-12 23:52:06 · 27662 阅读 · 13 评论 -
Python爬虫——DNS解析缓存
前言:这是Python爬虫中DNS解析缓存模块中的核心代码,是去年的代码了,现在放出来 有兴趣的可以看一下。 一般一个域名的DNS解析时间在10~60毫秒之间,这看起来是微不足道,但是对于大型一点的爬虫而言这就不容忽视了。例如我们要爬新浪微博,同个域名下的请求有1千万(这已经不算多的了),那么耗时在10~60万秒之间,一天才86400秒。也就是说单DNS解析这一项就用了好几天时间,此时加上DNS解原创 2017-02-12 12:21:20 · 10553 阅读 · 3 评论 -
scrapy_redis只能使用redis的db0?
背景:众所周知,Redis默认的配置会生成db0~db15共16个db,切分出16个db的一个作用是方便不同项目使用不同的db,防止的数据混淆,也为了方便数据查看。 Python在连接Redis时如果没有指定用哪一个db则默认使用db0。使用过scrapy_redis模块的同学也知道去重和种子队列都在db0上。现在有一个基于scrapy、Redis的分布式爬虫,是从同事那边接手过来的。原先没觉得s原创 2017-01-10 14:18:27 · 20742 阅读 · 6 评论 -
天猫双12爬虫(福利:266万条商品数据免费下载)
天猫双12爬虫代码分享,附266万活动商品数据免费下载。原创 2016-12-12 23:34:32 · 8871 阅读 · 4 评论 -
新浪微博爬虫分享(2016年12月01日更新)
新浪微博爬虫主要抓取微博用户的个人信息、发表的微博、关注和粉丝关系等。此次主要对种子队列和去重策略作了优化,并更新了Cookie池的维护,只需拷贝代码即可实现爬虫分布式扩展,适合大规模抓取。原创 2016-12-01 22:43:51 · 32051 阅读 · 48 评论 -
scrapy_redis种子优化
前言:继《scrapy_redis去重优化(已有7亿条数据),附Demo福利》优化完去重之后,Redis的内存消耗降了许多,然而还不满足。这次对scrapy_redis的种子队列作了一些优化(严格来说并不能用上“优化”这词,其实就是结合自己的项目作了一些改进,对本项目能称作优化,对scrapy_redis未必是个优化)。scrapy_redis默认是将Request对象序列化后(变成一条字符串)存入原创 2016-11-24 16:40:37 · 9991 阅读 · 1 评论 -
QQ空间爬虫分享(2016年11月18日更新)
前言:上一篇文章:《QQ空间爬虫分享(一天可抓取 400 万条数据)》 Github地址:QQSpider Q群讨论:很抱歉QQSpider这个爬虫过了这么久才作更新,同时也很感谢各位同学的肯定和支持! 这次主要替换了程序里一些不可用的链接,对登录时的验证码作了处理,对去重队列作了优化。并且可以非常简单地实现爬虫分布式扩展。 使用说明:启动前配置:需要安装的软原创 2016-11-19 01:31:47 · 24942 阅读 · 8 评论 -
天猫双11爬虫(福利:212万条商品数据免费下载)
2016年12月12日更新:《天猫双12爬虫(福利:266万条商品数据免费下载)》背景:2016年11月11日,中午刷了一下天猫,突然来了兴致想要把天猫上参与双11活动的商品都爬下来。双11,不仅因为打折商品的数据比普通数据更有价值,更重要的是在双11,天猫、京东为了容纳大流量,肯定会把防爬机制都暂停了,这种机会难得,岂能不爬? 之前没有爬过天猫/京东这些电商平台,对他们网站的结构和防爬机制也不是原创 2016-11-17 15:03:23 · 16246 阅读 · 19 评论 -
scrapy_redis去重优化(已有7亿条数据),附Demo福利
背景:前些天接手了上一位同事的爬虫,一个全网爬虫,用的是scrapy+redis分布式,任务调度用的scrapy_redis模块。大家应该知道scrapy是默认开启了去重的,用了scrapy_redis后去重队列放在redis里面。我接手过来的时候爬虫已经有7亿多条URL的去重数据了,再加上一千多万条requests的种子,redis占用了一百六十多G的内存(服务器,Centos7),总共才一百七十原创 2016-11-10 14:48:21 · 34121 阅读 · 23 评论 -
基于Redis的Bloomfilter去重(附Python代码)
前言:“去重”是日常工作中会经常用到的一项技能,在爬虫领域更是常用,并且规模一般都比较大。去重需要考虑两个点:去重的数据量、去重速度。为了保持较快的去重速度,一般选择在内存中进行去重。数据量不大时,可以直接放在内存里面进行去重,例如python可以使用set()进行去重。当去重数据需要持久化时可以使用redis的set数据结构。当数据量再大一点时,可以用不同的加密算法先将长字符串压缩成 16/原创 2016-11-10 12:32:45 · 27678 阅读 · 17 评论 -
User-Agent 汇总
前言:近半年没有写博客了,一打开Markdown竟然不知道从何开始。半年时间,要分享的东西比较多,今天第一篇,分享一个我整理后的 User-Agent 集合。 对于爬虫开发者而言,我们经常修改浏览器的 User-Agent 伪装成移动端,从而像手机浏览器一样访问目标网站。爬虫程序带上不同的 User-Agent,可以从m端(甚至是wap端)爬取目标网站。具体方法见《爬虫福利:教你爬wap站》,下面原创 2016-09-09 00:43:54 · 32466 阅读 · 2 评论 -
基于Redis的三种分布式爬虫策略
前言:爬虫是偏IO型的任务,分布式爬虫的实现难度比分布式计算和分布式存储简单得多。 个人以为分布式爬虫需要考虑的点主要有以下几个:爬虫任务的统一调度爬虫任务的统一去重存储问题速度问题足够“健壮”的情况下实现起来越简单/方便越好最好支持“断点续爬”功能Python分布式爬虫比较常用的应该是scrapy框架加上Redis内存数据库,中间的调度任务等用scrapy-redis模块实现。原创 2016-03-27 17:27:31 · 20328 阅读 · 2 评论 -
新浪微博分布式爬虫分享
代码请移步GitHub:SinaSpider(上面有跳转链接,别再问我代码在哪里了) 爬虫功能:此项目实现将单机的新浪微博爬虫(见《新浪微博爬虫分享(一天可抓取 1300 万条数据)》)重构成分布式爬虫。Master机只管任务调度,不管爬数据;Slaver机只管将Request抛给Master机,需要Request的时候再从Master机拿。 环境、架构:开发语言:Python2.7开原创 2016-03-16 15:38:48 · 25267 阅读 · 5 评论 -
爬虫福利:教你爬wap站
前言:玩过爬虫的朋友应该都清楚,爬虫难度:www > m > wap (www是PC端,m和wap是移动端,现在的智能手机一般用的是m站,部分老手机用的还是wap),原因也很简单,现在的网站越来越多地使用AJAX加载,反爬虫机制也厉害。而像wap这种移动端网站限制比较小,网页结构也简单,我们获取、解析起来都简单很多,理论上速度也会快很多。所以如果允许的话我们尽量采用wap站抓取。 正文:可原创 2016-03-06 19:42:32 · 24861 阅读 · 4 评论 -
Scrapy见面第五天
这算是我第一次使用框架吧,说来惭愧。 此前用Request带上cookie实现、(稍微)完善了QQ空间的爬虫(传送门),接下来想实现分布式去爬。其实只要能实现待爬QQ队列的共享,分布式的主要问题也就解决了。但是觉得这样实现的爬虫项目有点“不正规”,所以想用Scrapy框架和Redis数据库来整顿现有爬虫。无奈公司里也没什么人指点,全凭一人摸爬滚打,过程有点痛苦,但自信只要敢啃,还是可以拿下的,不成原创 2016-03-06 00:08:40 · 4586 阅读 · 2 评论 -
QQ空间爬虫分享(一天可抓取 400 万条数据)
代码请移步GitHub:QQSpider爬虫功能:QQSpider 使用广度优先策略爬取QQ空间中的个人信息、日志、说说、好友四个方面的信息,详细可见数据库说明。 判重使用“内存位”判重,理论上亿数量级的QQ可瞬间判重,内存只占用400M+。 爬虫速度可达到单机每天400万条数据以上(具体要考虑网速、网络带宽、稳定性等原因。我在学校是400万+,但在公司那边却只有六成的速度,普通家庭网络可能会更原创 2016-03-01 13:30:15 · 58689 阅读 · 38 评论 -
正则表达式之python实现
前文:首先,什么叫正则表达式(Regular Expression)? 例如我们要判断字符串"adi_e32fv,Ls"里面是否含有子串"e32f",又例如我们在一个含百万个姓名的txt文件中找姓“王”,名字以“五”结尾的名字,然后打印出来。结果为:“王五”、“王小五”、“王大五”、“王小小五”…… 以前我们是使用字符串函数来查找的,但是代码实现起来会很复杂。如今用正则表达原创 2015-03-19 23:46:30 · 2454 阅读 · 0 评论 -
第一只python小爬虫
前言:互联网就像一张无形的蜘蛛网,网站就相当于在这张网的交叉结点。而网络爬虫就是这张网上的蜘蛛,它是一种程序,能够利用url链接在各网站之间自动穿梭并抓取所需数据。学了python的正则表达式之后,我便迫不及待的想要找个应用玩一下,而网络爬虫就是个不二的选择。下面记录一下我写的第一只小爬虫,用来自动下载网页上的图片。(操作环境:32位Win8系统,运行工具:python2.7.9+Ec原创 2015-03-24 21:04:03 · 3862 阅读 · 0 评论 -
我的爬虫史
前言:曾经模仿别人的代码写过几个小爬虫,不过都是皮毛而已,下载一些图片,很简单的爬虫。 现在想系统的学习一下python网络爬虫,包括爬虫多线程、登陆、验证码、分布式、优化等方面。学习的方式是直接爬,一点点深入,遇到问题逐个解决。希望利用博客记录一下自己学习爬虫的过程,放出源代码,希望对后面学习的朋友提供个参考,同时希望通过大家的指正进行查缺补漏。运行环境: python2.7,Eclipse+原创 2015-12-07 16:31:06 · 4040 阅读 · 0 评论 -
1号小爬虫:普通的爬虫,下载百度壁纸
(更多爬虫请见:[我的爬虫史](http://blog.csdn.net/Bone_ACE/article/details/50195839))代码说明:曾经模仿实现过下载淘宝MM图片的爬虫,现在重新拾起爬虫,也是先从下载图片开始。本爬虫用来下载百度壁纸(传送门)。 源代码:#encoding=utf-8import urllibimport urllib2impo原创 2015-12-07 17:11:03 · 2959 阅读 · 1 评论 -
Python处理验证码第一篇(pytesser初探及报错处理)
前言:春节期间,无法全身心投入地去写爬虫,那就玩玩验证码吧,应该比较有趣!首次接触验证码识别,用pytesser接触一下最简单的验证码先,代码参照:使用python以及工具包进行简单的验证码识别。具体细节可以参见原文,里面安装和报错处理没有详细记录,我在此处主要记录一下自己的安装及处理过程。 效果:可识别以下类型的验证码: 正文:代码:# encoding=utf-8from原创 2016-02-10 18:19:43 · 12120 阅读 · 11 评论 -
Python报错:Visual C++ is required和ImportError: DLL load failed
前言:最近在 Github 里面找代码看看各路大神如何用 Python 破解验证码。在安装 numpy 和 scipy 的过程中遇到一些问题,在此记录一下,希望对遇到同样问题的同学有所帮助。主要的问题有: 1、安装 numpy 的时候遇到 “unable to find vcvarsall.bat” 和 “Setup script exited with error: Microsoft Visu原创 2016-02-15 17:19:11 · 4259 阅读 · 0 评论 -
Python MongoDB 插入数据,已存在则不执行,不存在则插入
前言:想把QQ日志爬虫(Python)爬下来的日志保存到 MongoDB 里面。 但 insert 的时候报错:E11000 duplicate key error collection: QQ.Blog index: _id_ dup key: { : "965464518_1301232446" }后来知道错误的原因是:插入的数据和已有数据的 ID 重复了。我想要的是:插入一篇日志,如果该日志原创 2016-02-19 11:24:14 · 21707 阅读 · 8 评论