随笔分类 -  python爬虫

摘要:1 import smtplib 2 import email.mime.multipart 3 import email.mime.text 4 5 def send_email(content=''): 6 """ 7 发送邮件 8 :param SMTP_host: smtp.163.com 9 :param from_addr: 发送地... 阅读全文
posted @ 2018-02-22 16:05 Charles.L 阅读(1258) 评论(0) 推荐(0)
摘要:原创北航大才:https://cuiqingcai.com/5006.html NULL:http://www.infosec-wiki.com/?p=432737 阅读全文
posted @ 2018-02-09 16:12 Charles.L 阅读(1410) 评论(0) 推荐(0)
摘要:Splash是什么: Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。 为什么要有Splash: 为了更加有 阅读全文
posted @ 2018-02-08 16:13 Charles.L 阅读(9785) 评论(0) 推荐(0)
摘要:一、需求 最近准备爬取某电商网站的数据,先不考虑代理、分布式,先说效率问题(当然你要是请求的太快就会被封掉,亲测,400个请求过去,服务器直接拒绝连接,心碎),步入正题。一般情况下小白的我们第一个想到的是for循环,这个可是单线程啊。那我们考虑for循环直接开他个5个线程,问题来了,如果有一个url 阅读全文
posted @ 2018-01-31 17:05 Charles.L 阅读(9928) 评论(1) 推荐(0)
摘要:背景: 初来乍到的pythoner,刚开始的时候觉得所有的网站无非就是分析HTML、json数据,但是忽略了很多的一个问题,有很多的网站为了反爬虫,除了需要高可用代理IP地址池外,还需要登录。例如知乎,很多信息都是需要登录以后才能爬取,但是频繁登录后就会出现验证码(有些网站直接就让你输入验证码),这 阅读全文
posted @ 2018-01-05 11:41 Charles.L 阅读(18256) 评论(4) 推荐(2)
摘要:我们在写普通脚本的时候,从一个网站拿到一个文件的下载url,然后下载,直接将数据写入文件或者保存下来,但是这个需要我们自己一点一点的写出来,而且反复利用率并不高,为了不重复造轮子,scrapy提供很流畅的下载文件方式,只需要随便写写便可用了。 mat.py文件 pipelines.py settin 阅读全文
posted @ 2017-12-24 15:33 Charles.L 阅读(7461) 评论(0) 推荐(0)
摘要:使用背景: 我们通常在爬去某个网站的时候都是爬去每个标签下的某些内容,往往一个网站的主页后面会包含很多物品或者信息的详细的内容,我们只提取某个大标签下的某些内容的话,会显的效率较低,大部分网站的都是按照固定套路(也就是固定模板,把各种信息展示给用户),LinkExtrator就非常适合整站抓取,为什 阅读全文
posted @ 2017-12-24 10:38 Charles.L 阅读(13416) 评论(1) 推荐(1)
摘要:背景: 我们知道多线程要比多进程效率更高,因为线程存在于进程之内,打开一个进程的话,首先需要开辟内存空间,占用内存空间比线程大。这样想也不怪,比如一个进程用10MB,开10个进程就得100MB的内存空间。但是我们开线程的话,只需要开通一个进程,在进程里面再开10个线程,这样的话内存空间只需要10MB 阅读全文
posted @ 2017-12-08 10:36 Charles.L 阅读(913) 评论(0) 推荐(0)
摘要:一、首先想到的是for循环,单线程爬取每个url,但是如果有url出现了问题,后面的url就得等,性能低。 二、我们考虑线程池的问题,下面我们定义了线程池里面最多10个任务,也就是说最多同一时间只能有10个爬行任务,这样的话就是自己干自己的互相不影响,加上主线程的话是n+1个线程,缺点也很明显,耗时 阅读全文
posted @ 2017-12-04 22:33 Charles.L 阅读(1155) 评论(0) 推荐(0)
摘要:Link Extractors Link Extractors 是那些目的仅仅是从网页(scrapy.http.Response 对象)中抽取最终将会被follow链接的对象。 Scrapy默认提供2种可用的 Link Extractor, 但你通过实现一个简单的接口创建自己定制的Link Extr 阅读全文
posted @ 2017-12-04 11:25 Charles.L 阅读(7739) 评论(0) 推荐(0)
摘要:Scrapy终端是一个交互终端,供您在未启动spider的情况下尝试及调试您的爬取代码。 其本意是用来测试提取数据的代码,不过您可以将其作为正常的Python终端,在上面测试任何的Python代码。 该终端是用来测试XPath或CSS表达式,查看他们的工作方式及从爬取的网页中提取的数据。 在编写您的 阅读全文
posted @ 2017-11-30 17:46 Charles.L 阅读(10852) 评论(0) 推荐(0)
摘要:下面我们看看用scrapy模拟登录的基本写法: 注意:我们经常调试代码的时候基本都用chrome浏览器,但是我就因为用了谷歌浏览器(它总是登录的时候不提示我用验证码,误导我以为登录时不需要验证码,其实登录时候必须要验证码的),这里你可以多试试几个浏览器,一定要找个提示你输入验证码的浏览器调试。 1、 阅读全文
posted @ 2017-11-28 22:39 Charles.L 阅读(4440) 评论(0) 推荐(0)
摘要:一、背景: 小编在爬虫的时候肯定会遇到被封杀的情况,昨天爬了一个网站,刚开始是可以了,在settings的设置DEFAULT_REQUEST_HEADERS伪装自己是chrome浏览器,刚开始是可以的,紧接着就被对方服务器封杀了。 代理: 代理,代理,一直觉得爬去网页把爬去速度放慢一点就能基本避免被 阅读全文
posted @ 2017-11-27 17:01 Charles.L 阅读(20749) 评论(1) 推荐(1)
摘要:背景: 刚开始学习scrapy爬虫框架的时候,就在想如果我在服务器上执行一个爬虫任务的话,还说的过去。但是我不能每个爬虫任务就新建一个项目吧。例如我建立了一个知乎的爬行任务,但是我在这个爬行任务中,写了多个spider,重要的是我想让他们同时运行,怎么办? 小白解决办法: 1、在spiders同目录 阅读全文
posted @ 2017-11-26 20:42 Charles.L 阅读(10807) 评论(1) 推荐(1)
摘要:scrapy的pipeline是一个非常重要的模块,主要作用是将return的items写入到数据库、文件等持久化模块,下面我们就简单的了解一下pipelines的用法。 案例一: items池 class ZhihuuserItem(scrapy.Item): # define the field 阅读全文
posted @ 2017-11-26 18:05 Charles.L 阅读(7569) 评论(0) 推荐(0)
摘要:pycharm是一个非常强大的python开发工具,现在很多代码最终在线上跑的环境都是linux,而开发环境可能还是windows下开发,这就需要经常在linux上进行调试,或者在linux对代码进行编写,而pycharm提供了非常便捷的方式。具体实现在windows上远程linux开发和调试的代码 阅读全文
posted @ 2017-11-26 09:43 Charles.L 阅读(8138) 评论(0) 推荐(0)
摘要:简介: Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。 其最初是为了 页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以应用在获取API所返回的数据(例如 Amazon Associates Web Ser 阅读全文
posted @ 2017-10-25 15:06 Charles.L 阅读(589) 评论(0) 推荐(0)
摘要:Anaconda概述 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便地解决多版本python并存、切换以及各种第三方包安装问题。Anaconda利用工具/命令conda来进行package和envir 阅读全文
posted @ 2017-10-25 10:18 Charles.L 阅读(2307) 评论(0) 推荐(0)
摘要:简介: Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。 Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如Ba 阅读全文
posted @ 2017-10-25 09:17 Charles.L 阅读(3294) 评论(0) 推荐(0)
摘要:Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的ke 阅读全文
posted @ 2017-10-19 16:05 Charles.L 阅读(1289) 评论(0) 推荐(0)