摘要: 背景: 初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML、json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录。例如知乎,很多信息都是需要登录以后才能爬取,但是频繁登录后就会出现验证码(有些网站直接就让你输入验证码),这 阅读全文
posted @ 2018-01-05 11:41 Charles.L 阅读(18190) 评论(4) 推荐(2) 编辑
摘要: 我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载文件方式,只需要随便写写便可用了。 mat.py文件 pipelines.py settin 阅读全文
posted @ 2017-12-24 15:33 Charles.L 阅读(7395) 评论(0) 推荐(0) 编辑
摘要: 使用背景: 我们通常在爬去某个网站的时候都是爬去每个标签下的某些内容,往往一个网站的主页后面会包含很多物品或者信息的详细的内容,我们只提取某个大标签下的某些内容的话,会显的效率较低,大部分网站的都是按照固定套路(也就是固定模板,把各种信息展示给用户),LinkExtrator就非常适合整站抓取,为什 阅读全文
posted @ 2017-12-24 10:38 Charles.L 阅读(13246) 评论(1) 推荐(1) 编辑
摘要: 背景: 我们知道多线程要比多进程效率更高,因为线程存在于进程之内,打开一个进程的话,首先需要开辟内存空间,占用内存空间比线程大。这样想也不怪,比如一个进程用10MB,开10个进程就得100MB的内存空间。但是我们开线程的话,只需要开通一个进程,在进程里面再开10个线程,这样的话内存空间只需要10MB 阅读全文
posted @ 2017-12-08 10:36 Charles.L 阅读(880) 评论(0) 推荐(0) 编辑
摘要: 一、首先想到的是for循环,单线程爬取每个url,但是如果有url出现了问题,后面的url就得等,性能低。 二、我们考虑线程池的问题,下面我们定义了线程池里面最多10个任务,也就是说最多同一时间只能有10个爬行任务,这样的话就是自己干自己的互相不影响,加上主线程的话是n+1个线程,缺点也很明显,耗时 阅读全文
posted @ 2017-12-04 22:33 Charles.L 阅读(1140) 评论(0) 推荐(0) 编辑
摘要: Link Extractors Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response 对象)中抽取最终将会被follow链接的对象。 Scrapy默认提供2种可用的 Link Extractor, 但你通过实现一个简单的接口创建自己定制的Link Extr 阅读全文
posted @ 2017-12-04 11:25 Charles.L 阅读(7665) 评论(0) 推荐(0) 编辑
摘要: Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。 该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您的 阅读全文
posted @ 2017-11-30 17:46 Charles.L 阅读(10763) 评论(0) 推荐(0) 编辑
摘要: 下面我们看看用scrapy模拟登录的基本写法: 注意:我们经常调试代码的时候基本都用chrome浏览器,但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码,误导我以为登录时不需要验证码,其实登录时候必须要验证码的),这里你可以多试试几个浏览器,一定要找个提示你输入验证码的浏览器调试。 1、 阅读全文
posted @ 2017-11-28 22:39 Charles.L 阅读(4346) 评论(0) 推荐(0) 编辑
摘要: 一、背景: 小编在爬虫的时候肯定会遇到被封杀的情况,昨天爬了一个网站,刚开始是可以了,在settings的设置DEFAULT_REQUEST_HEADERS伪装自己是chrome浏览器,刚开始是可以的,紧接着就被对方服务器封杀了。 代理: 代理,代理,一直觉得爬去网页把爬去速度放慢一点就能基本避免被 阅读全文
posted @ 2017-11-27 17:01 Charles.L 阅读(20556) 评论(1) 推荐(1) 编辑
摘要: 背景: 刚开始学习scrapy爬虫框架的时候,就在想如果我在服务器上执行一个爬虫任务的话,还说的过去。但是我不能每个爬虫任务就新建一个项目吧。例如我建立了一个知乎的爬行任务,但是我在这个爬行任务中,写了多个spider,重要的是我想让他们同时运行,怎么办? 小白解决办法: 1、在spiders同目录 阅读全文
posted @ 2017-11-26 20:42 Charles.L 阅读(10698) 评论(1) 推荐(1) 编辑