python爬虫
学习真的很有用
这个作者很懒,什么都没留下…
展开
-
通过lxml数据抽取实现一个简单爬虫(爬虫基础学习)
1.lxml python lxml包用于解析XML和html文件,可以使用xpath和css定位元素,在爬虫中经常需要根据html标签来定位需要爬取的信息所在的位置,当然也可以使用正则表达式来匹配对应的html标签及标签中包含的内容,但是相信大部分小伙伴对正则表达式都深恶痛绝,想要写出来一个能够正确匹配到需要的信息的正则表达式实在是不容易,但是使用lxml就能够非常方便的匹配到我们想要...原创 2018-09-08 16:37:43 · 1010 阅读 · 0 评论 -
分布式爬虫原理
一、分布式爬虫架构在了解分布式爬虫架构之前,首先回顾一下Scrapy的架构,如下图所示。Scrapy单机爬虫中有一个本地爬取队列Queue,这个队列是利用deque模块实现的。如果新的Request生成就会放到队列里面,随后Request被Scheduler调度。之后,Request交给Downloader执...转载 2018-11-09 21:00:16 · 4391 阅读 · 0 评论 -
Scrapy与Twisted
Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。在任何情况下,都不要写阻塞的代码。阻塞的代码包括:访问文件、数据库或者Web产生新的进程并需要处理新进程的输出,如运行shell命令执行系统层次操作的代码,如等待系统队列Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。至于T...转载 2018-11-09 20:51:38 · 2179 阅读 · 0 评论 -
如何破解字体反爬机制
这几天爬取58租房信息的时候意外发现了它是一个字体反爬的网站,所谓的字体反爬就是网站将一些关键字替换为网站自己的字体,这样在网页上字体会正常显示,但是当爬取下来的时候,经过字体加密的字符都是乱码的,根本无法查看如图所示:可以看到,2390元/月在页面上是正常显示的,但是,当我们打开查看器查看的时候......好端端的2390就变成了不知道什么字符.........原创 2018-10-27 17:39:14 · 5017 阅读 · 1 评论 -
通过ajax接口爬取智联招聘
上次分析了抓取智联招聘网站遇到的坑,最后使用selenium模拟的方法抓取到了智联的招聘数据,但是我发现通过分析智联招聘的ajax接口,模拟ajax请求直接获取json数据这种方法更简单。 分析网页ajax接口:在搜索框输入python,点击搜索,打开浏览器开发者模式,点击network,点击XHR过滤出来ajax请求第一页:这是搜索之后第一页的信息,...原创 2018-10-27 16:04:25 · 1683 阅读 · 0 评论 -
分析ajax接口抓取今日头条
抓取ajax网站可以通过分析ajax接口的方式获取到返回的json数据,从而抓取到我们想要的数据,以今日头条为例,如何分析ajax接口,模拟ajax请求爬取数据。 以今日头条的街拍为例,网页上一页只显示部分数据,查看后续数据需要鼠标下滑,这里我们分析一下它的ajax接口。打开开发者工具,选择network,点击XHR过滤出来ajax请求,可以看到这里有很多...原创 2018-10-27 10:43:40 · 3213 阅读 · 0 评论 -
requests实现一个通用自动下载爬虫(限制下载速度,下载深度)
Scrapy框架虽然能够很方便的下载网页,但是有时候爬取数据可能用不到Scrapy如此大的框架,使用requests库进行下载更加方便,那么我们就可以手动实现一个通用的requests库进行下载的爬虫,包括自动下载网页中其他链接的网页,限制爬虫爬取的速度,限制爬取网页的深度(从种子链接往下爬取几层网页)。 主要功能实现:1.从下载的网页抽取出其他网页的链接。2.解...原创 2018-10-07 09:43:40 · 3520 阅读 · 0 评论 -
实现爬虫下载限速
大部分网站一般都会通过ip的访问频率来判断是不是爬虫,虽然Scrapy框架实现了爬虫的限制爬取速度功能,但是当我们爬取的信息不需要用到Scrapy框架,使用requests更加方便的时候,就需要自己手动实现爬虫限制下载速度了。 代码思路:1.记录爬虫爬取过的每个链接与爬取时间的时间戳;2.设置两次下载时间间隔;3.下载新的网页的时候判断两次下载的时间间隔是否达到了...原创 2018-10-06 16:39:34 · 1632 阅读 · 0 评论 -
Scrapy框架原理及流程
这是一篇整理爬虫概念知识的文章。Scrapy工作流程图Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的:1、爬虫引擎获得初始请求开始抓取。 2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 3、爬虫调度器返回下一个请求给爬虫引擎。 4、引擎请求发送到下载器,通过下载中间件下载网络数据。 5、一旦下载器完成页面下载,将下载结果返回给爬...原创 2018-10-06 16:13:54 · 915 阅读 · 0 评论 -
scrapy由浅入深(三) selenium模拟爬取ajax动态页面(智联招聘)
爬取智联招聘的网址:https://sou.zhaopin.com/?pageSize=60&jl=489&kw=python&kt=3 上一篇博客爬取了前程无忧的职位招聘信息,总体来说前程无忧的网站信息并不难爬取,前程无忧的网站并没有ajax,直接请求网站就能获得职位信息,但是智联招聘的页面涉及到ajax,直接get网站的url获取不到任何有用的信息,这...原创 2018-09-21 21:49:56 · 1919 阅读 · 0 评论 -
scrapy由浅入深(二) 爬取51job职位薪资信息
上次的爬虫只是爬取了CSDN论坛的问题数据,相对来说比较简单,本篇文章来介绍一下爬取51job网站,获取它的职位,薪资,职位要求等信息。 代码思路:1.首先获取到种子网页的所有职位的url,以及下一页的url。2.通过抽取到的职位的url来依次请求相应职位的详细信息,包括薪资,职位要求等。3.定义解析数据的函数,通过xpath或者css选择器获取到职位薪资信息。4...原创 2018-09-20 23:11:49 · 910 阅读 · 0 评论 -
scrapy由浅入深(一)爬取CSDN论坛
对scrapy框架的学习也有了一段时间,所以准备爬取一些网站的信息来检测一下scrapy的学习成果。由浅入深,从较规律的网站开始爬取,再爬取不规则的网站,以及ajax动态页面。 今天先从较简单的CSDN的python论坛爬取,之所以说这个比较简单是因为CSDN的论坛不是动态的页面,而且网站的url非常有规律可询,并不需要使用selenium模拟或者抽取下一页的网...原创 2018-09-20 22:40:17 · 810 阅读 · 0 评论 -
爬虫如何避免网页重复爬取
在使用爬虫爬取网页信息的时候,如果只爬取固定的网页还好,但是如果从一个网页的源码中解析出其他的链接,爬虫爬取到其他的网页,这样就会出现一个问题,如何确定这个网页我爬取过,如何设置爬取的网页不再爬取。 本篇文章实现避免重复爬取的思路是:将爬取过的网页的链接和该网页的信息以键值对的形式保存到数据库中,当爬虫爬取一个网页之前,先从数据库中查找是否有该网页的爬取记录,如果有该网页的爬取记...原创 2018-09-08 17:23:28 · 21146 阅读 · 0 评论 -
scrapy解决selenium中无法点击Element:ElementClickInterceptedException
最近抓取天猫商评论的时候遇到的问题selenium.common.exceptions.ElementClickInterceptedException: Message: Element <a class=""> is not clickable at point (318.3000030517578,661.7999877929688) because another...原创 2018-11-16 13:17:30 · 34073 阅读 · 13 评论