![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
爬虫
joker1993
这个作者很懒,什么都没留下…
展开
-
从零构建爬虫系统(二)——面向中小企业的爬虫解决方案
前言从2020年五月开始,我开始主导我们公司的网络采集系统,由于从二月到四月一直在做数据质量风控相关的项目,采集这个项目便一直在搁置中。原创 2020-07-26 16:21:44 · 691 阅读 · 0 评论 -
Scrapy源码分析(四):链接去重器的实现
前言我们在上一篇文章中,分析了Scrapy中调度器的源码,了解了其中优先队列与内存队列、磁盘队列的结合使用。今天我们将目光转向Scrapy的链接去重器——dupefilters.py在调度器scheduler.py中,from_crawler定义了调度器的链接去重器类:RFPDupeFilterclass Scheduler(object): def __init__(s...原创 2019-11-26 10:22:30 · 262 阅读 · 0 评论 -
Scrapy源码分析(番外):queuelib优先队列
前言在Scrapy的调度器中的类变量里,有一个叫做pqclass的,是库queuelib中优先队列的一个类名,今天我们来分析下它的原理。代码思想queuelib是从Scrapy中分离出来的一个库,今天我们主要看其中的类PriorityQueue:class PriorityQueue(object): """ PriorityQueue的实现是由一个has...原创 2019-11-25 18:42:20 · 601 阅读 · 0 评论 -
Scrapy源码分析(三):调度器的实现
前言在上一篇文章“Scrapy源码分析(二):一个参考Scrapy实现的爬虫框架TinyScrapy”,我们基本明白了引擎是爬虫的新增,它主要通过内部的_next_request作为消费者,种子列表生成器和get_response_callback作为生产者,与调度器进行了方法调用。我们在前文讲过,调度器在本质上可以把它看为队列,在引擎中也主要是入队列enqueue_request和出队列...原创 2019-11-25 22:49:43 · 1491 阅读 · 1 评论 -
Scrapy源码分析(二):一个参考Scrapy实现的爬虫框架TinyScrapy
前言本文的源码来自于网络,为老男孩培训课中的讲解示例,笔者在听完讲解后发现确实讲出了Scrapy的精髓,因此在这里分享给大家,也希望大家支持原视频作者,从Scrapy到TinyScrapyScrapy的整体架构我们从他的文档中基本能理清。但是到代码层级,我们发现它主要是使用的twisted,一个基于事件驱动的网络框架来实现各个组件间的逻辑处理。因此既要弄明白twisted原理,还要...原创 2019-11-24 16:05:51 · 778 阅读 · 4 评论 -
Scrapy源码分析(一):代码结构初探
前言很多朋友在使用scrapy编写爬虫的时候,都能感受到这个框架的在定制性方面的强大。我们完成一个爬虫只需要定义好Spider抽取规则即可。即使再复杂一点的需求,我们也可以通过pipeline来控制爬虫的输出,middleware来控制下载中的请求定制。可是大家有没有想过scrapy是如何将我们的初始种子url一步步的下载、解析、加入新队列,周而复始的运行呢?这篇文章我来带着大家通过阅读文...原创 2019-11-24 22:37:19 · 980 阅读 · 1 评论 -
爬虫小菜:要注意Accept-Encoding为br时候的问题
我们在爬虫做请求的时候,一般会在request中添加请求头:Accept-Encoding,往往会指定方式为“gzip,deflate,br”三种压缩方式。gzip和deflate为传统的压缩格式br指的是Brotli,Google在2015年时候发布的新的数据压缩算法,而我们的工具request的response等文本只支持gzip,deflate格式的解压缩,还不支持br形式的解压...原创 2019-11-23 22:57:22 · 4631 阅读 · 0 评论 -
使用scrapy cluster构建企业级爬虫系统——(2)实现网站深度抓取
上回博客中,我们对scrapy cluster进行了介绍,今天我们来搭建scrapy cluster的开发环境。这里我使用的开发机环境是Ubuntu 18.04。大家日常如果使用windows开发时候,最好把zookeeper,kafka,redis安装在linux开发服务器上,避免一些不必要的坑。我们先看下scrapy cluster的文档结构:整体部分包括Introductio...原创 2019-07-25 10:38:00 · 496 阅读 · 0 评论 -
爬虫小菜:Scrapy cluster中连接不上zookeeper的原因
配置好Scrapy cluster各个组件、编写好爬虫后在运行spider时候,我们可能会遇到以下爬虫连接不到zookeeper的问题:如果你的日志打印的没有我的全,新建一个localsettings.py,把日志级别都改为“DEBUG”的级别:# coding=utf8# 爬虫模块的日志级别SC_LOG_LEVEL="DEBUG"# QUEUE_HITS = 60# QUE...原创 2019-07-10 13:37:21 · 225 阅读 · 0 评论 -
爬虫小菜:你知道xpath中text()和string(.)的区别吗?
我们在进行爬虫时候,经常会遇到如下这样的页面:<span> <div> <em>你好</em>,北京 </div></span>在日常抓取的时候,遇到更多的情况是抓取<em>中的你好,这时使用xpath("//div/em/text()")就可以提取到。现在我们考虑下...原创 2019-07-09 22:50:25 · 3313 阅读 · 2 评论 -
使用scrapy cluster构建企业级爬虫系统——(1)为什么是scrapy cluster,而不是scrapy?
引言 数据采集是数据科学中很重要的一部分,数据采集看上去容易,但是实际做起来,想要做好,很难。因为我们要面对的是不同的目标网站,获取的数据形式,获取频率,获取方式也千差万别。 比如如果你做的是一个大学的课程作业,或是需要帮助导师抓取一些数据,比如论坛数据,美食网站数据,那么这种爬虫往往只需要执行一次即可,他的目标是尽量快,尽量完整的保存下数据,工程量尽量的小,这个时候你需...原创 2019-07-05 23:59:27 · 342 阅读 · 2 评论 -
爬虫小菜:使用fake-useragent随机伪装UA头部
在爬虫中我们经常需要伪装请求中的User-Agent头部,用于访问目标网站。但是只用一个User-Agent短时间内连续访问目标网站可能会有被Banned风险。一般网上有解决方案说讲一批User-Agent写入到配置文件中,爬虫在请求中随机拿一个User-Agent再去请求即可。...原创 2019-10-11 11:08:23 · 1183 阅读 · 0 评论