随笔分类 -  爬虫

摘要:性能相关 在编写爬虫时,性能的消耗主要在IO请求中,当单进程单线程模式下请求URL时必然会引起等待,从而使得请求整体变慢。 import requests def fetch_async(url): response = requests.get(url) return response url_l 阅读全文
posted @ 2019-07-22 12:00 帅某人是也 阅读(207) 评论(0) 推荐(0)
摘要:Python标准库中提供了:urllib、urllib2、httplib等模块以供Http请求,但是,它的 API 太渣了。它是为另一个时代、另一个互联网所创建的。它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务。 Requests 是使用 Apache2 Licensed 许可证的 基于 阅读全文
posted @ 2019-07-14 11:00 帅某人是也 阅读(118) 评论(0) 推荐(0)
摘要:因为现在很多网站为了限制爬虫,设置了为只有登录才能看更多的内容,不登录只能看到部分内容,这也是一种反爬虫的手段,所以这个文章通过模拟登录知乎来作为例子,演示如何通过scrapy登录知乎 在通过scrapy登录知乎之前,我们先通过requests模块登录知乎,来熟悉这个登录过程 不过在这之前需要了解的 阅读全文
posted @ 2019-06-23 11:47 帅某人是也 阅读(391) 评论(0) 推荐(0)
摘要:总架构理解Middleware 通过scrapy官网最新的架构图来理解: 这个图较之前的图顺序更加清晰,从图中我们可以看出,在spiders和ENGINE提及ENGINE和DOWNLOADER之间都可以设置中间件,两者是双向的,并且是可以设置多层. 关于Downloader Middleware我在 阅读全文
posted @ 2019-06-23 11:46 帅某人是也 阅读(303) 评论(0) 推荐(0)
摘要:爬虫与发爬虫的厮杀,一方为了拿到数据,一方为了防止爬虫拿到数据,谁是最后的赢家? 重新理解爬虫中的一些概念 爬虫:自动获取网站数据的程序反爬虫:使用技术手段防止爬虫程序爬取数据误伤:反爬虫技术将普通用户识别为爬虫,这种情况多出现在封ip中,例如学校网络、小区网络再或者网络网络都是共享一个公共ip,这 阅读全文
posted @ 2019-06-23 11:45 帅某人是也 阅读(258) 评论(0) 推荐(0)
摘要:按照上一篇文章中我们将代码放到远程主机是通过拷贝或者git的方式,但是如果考虑到我们又多台远程主机的情况,这种方式就比较麻烦,那有没有好用的方法呢?这里其实可以通过scrapyd,下面是这个scrapyd的github地址:https://github.com/scrapy/scrapyd 当在远程 阅读全文
posted @ 2019-06-23 11:44 帅某人是也 阅读(681) 评论(0) 推荐(0)
摘要:在上一篇文章中主要写了关于爬虫过程的分析,下面是代码的实现,完整代码在:https://github.com/pythonsite/spider items中的代码主要是我们要爬取的字段的定义 这些字段的是在用户详细信息里找到的,如下图所示,这里一共有58个字段,可以详细研究每个字段代表的意思: 关 阅读全文
posted @ 2019-06-23 11:42 帅某人是也 阅读(338) 评论(0) 推荐(0)
摘要:关于Scrapy工作流程回顾 Scrapy单机架构 上图的架构其实就是一种单机架构,只在本机维护一个爬取队列,Scheduler进行调度,而要实现多态服务器共同爬取数据关键就是共享爬取队列。 分布式架构 我将上图进行再次更改 这里重要的就是我的队列通过什么维护?这里一般我们通过Redis为维护,Re 阅读全文
posted @ 2019-06-23 11:42 帅某人是也 阅读(300) 评论(0) 推荐(0)
摘要:爬取的思路 首先我们应该找到一个账号,这个账号被关注的人和关注的人都相对比较多的,就是下图中金字塔顶端的人,然后通过爬取这个账号的信息后,再爬取他关注的人和被关注的人的账号信息,然后爬取被关注人的账号信息和被关注信息的关注列表,爬取这些用户的信息,通过这种递归的方式从而爬取整个知乎的所有的账户信息。 阅读全文
posted @ 2019-06-23 11:40 帅某人是也 阅读(1053) 评论(0) 推荐(0)
摘要:这篇文章中写了常用的下载中间件的用法和例子。Downloader Middleware处理的过程主要在调度器发送requests请求的时候以及网页将response结果返回给spiders的时候,所以从这里我们可以知道下载中间件是介于Scrapy的request/response处理的钩子,用于修改 阅读全文
posted @ 2019-06-23 11:37 帅某人是也 阅读(353) 评论(0) 推荐(0)
摘要:当Item 在Spider中被收集之后,就会被传递到Item Pipeline中进行处理 每个item pipeline组件是实现了简单的方法的python类,负责接收到item并通过它执行一些行为,同时也决定此Item是否继续通过pipeline,或者被丢弃而不再进行处理 item pipelin 阅读全文
posted @ 2019-06-23 11:35 帅某人是也 阅读(389) 评论(0) 推荐(0)
摘要:Spider类定义了如何爬去某个网站,包括爬取的动作以及如何从网页内容中提取结构化的数据,总的来说spider就是定义爬取的动作以及分析某个网页 工作流程分析 以初始的URL初始化Request,并设置回调函数,当该request下载完毕并返回时,将生成response,并作为参数传给回调函数. s 阅读全文
posted @ 2019-06-23 11:34 帅某人是也 阅读(360) 评论(0) 推荐(0)
摘要:Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通过特定的Xpath或者CSS表达式来选择HTML文件的某个部分Xpath是专门在XML文件中选择节点的语言,也可以用在HTML上。CSS是一门将HTML文档样式化语言,选择器由它定义,并与特定的HTML元素的样式相关联。 X 阅读全文
posted @ 2019-06-23 11:33 帅某人是也 阅读(349) 评论(0) 推荐(0)
摘要:这篇文章主要是对的scrapy命令行使用的一个介绍 创建爬虫项目 scrapy startproject 项目名例子如下: 这个时候爬虫的目录结构就已经创建完成了,目录结构如下: 接着我们按照提示可以生成一个spider,这里以百度作为例子,生成spider的命令格式为;scrapy genspid 阅读全文
posted @ 2019-06-23 11:32 帅某人是也 阅读(447) 评论(0) 推荐(0)
摘要:这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程 阅读全文
posted @ 2019-06-23 11:26 帅某人是也 阅读(352) 评论(0) 推荐(0)
摘要:这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider/tree/master/jobboleSpider 注:这个文章并不会对详细的用法进行讲解,是为了 阅读全文
posted @ 2019-06-23 11:25 帅某人是也 阅读(272) 评论(0) 推荐(0)
摘要:网站的树结构 深度优先算法和实现 广度优先算法和实现 网站的树结构 通过伯乐在线网站为例子: 并且我们通过访问伯乐在线也是可以发现,我们从任何一个子页面其实都是可以返回到首页,所以当我们爬取页面的数据的时候就会涉及到去重的问题,我们需要将爬过的url记录下来,我们将上图进行更改 在爬虫系统中,待抓取 阅读全文
posted @ 2019-06-23 11:22 帅某人是也 阅读(724) 评论(0) 推荐(0)
摘要:通过前面的文章已经学习了基本的爬虫知识,通过这个例子进行一下练习,毕竟前面文章的知识点只是一个 一个单独的散知识点,需要通过实际的例子进行融合 分析网站 其实爬虫最重要的是前面的分析网站,只有对要爬取的数据页面分析清楚,才能更方便后面爬取数据 目标站和目标数据目标地址:http://www.hshf 阅读全文
posted @ 2019-06-23 11:21 帅某人是也 阅读(574) 评论(0) 推荐(0)
摘要:一、什么是Selenium selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit 阅读全文
posted @ 2019-06-23 11:20 帅某人是也 阅读(239) 评论(0) 推荐(0)
摘要:PyQuery库也是一个非常强大又灵活的网页解析库,如果你有前端开发经验的,都应该接触过jQuery,那么PyQuery就是你非常绝佳的选择,PyQuery 是 Python 仿照 jQuery 的严格实现。语法与 jQuery 几乎完全相同,所以不用再去费心去记一些奇怪的方法了。 官网地址:htt 阅读全文
posted @ 2019-06-23 11:17 帅某人是也 阅读(292) 评论(0) 推荐(0)