一、PageRank算法
原理
浏览器用来标识网页等级或重要性
(1)如果一个网页被很多其它网页链接到,这意味着该网页评级很高,它的PageRank值会随之提升;
(2)如果PageRank值很高的网页与另外的网页相关联,那么那个网页的PageRank值将相应地增加。
缺点
网站首页推荐的都是访问量高的旅游信息,这些“热数据”是少且定量的,便意味着大部分数据都成为了冷数据,那么使用该算法采集的话,会遗漏很多的数据,不适合我们接下来的数据分析。
二、广度优先算法
原理
将种子节点对应网页中的链接作为子节点,然后将得到的子节点提取出来放入队列中,并且需要设置一张存放已经处理过的那些链接的待用表。
关键网页经常靠近种子,随着持续深度爬行,看到的房产信息越来越多,但重要性却越来越低。
广度优先遍历适合多爬虫的作业抓取。
三、深度优先算法
原理
深度优先搜索算法会沿着现有的页面链接跳转到无法继续深入为止,然后跳转回原先的页面,再继续悬着其他的链接进行跳转。
结束条件
缺点
遇到一个网站有足够深层次目录,抓取工具将被深深沉浸,这个算法显然不适合旅游网站这类结构规整的web站点
四、反反爬措施
原因
网站为了阻止别人批量获取自己网站信息,不反爬就会封ip,弹出验证码
基于用户行为监控的反爬机制
(1)在采集时频繁更换ip,避免被系统判别为爬虫而导致接下来一系列封锁行为
(2)设置请求等待时间,避免因为短时间的频繁访问而导致的封禁
基于用户行为监控的反爬机制
Selenium通过调用浏览器进行自动化操作,模拟真实浏览器操作行为来突破封锁,但采集速率过慢
通过Headers反反爬
对于基于Headers的反机制,在代码中修改或者将Headers参数引入便能绕过这些机制,因其简便高效本爬虫也采用了此方法来进行反反爬的处理
五、爬虫框架
目前较为流行的 Python 爬虫框架及技术,其中包括 Scrapy-Redis 分布式、 Selenium 自动化框架,IPProxys 代理池
Scrapy 多线程爬取及 Redis 分布式部署,结合两者的优势进一步加快了爬虫进程抓取网络信息的速度。Selenium 框架以及 IPProxys 代理池则通过驱动浏览器网页渲染, 模拟用户登录使用网页,使用代理 IP 地址,防止同一个 IP 地址短时间内多次访问同一个服务器而被反爬
Selenium
Selenium是一个自动化测试工具,支持包括Chrome,Firefox,Safari,PhantomJs等一些浏览器。如果用于爬虫中,我们主要用来解决一些JavaScript渲染的问题。
参考网址:
Python爬虫(10):Selenium+PhantomJS基本操作
Selenium-Python中文文档
Python网络爬虫数据采集实战:Selenium库爬取京东商品
五、jieba分词
使用 Pyltp、Jieba 模板对已获取到的疾病爬虫结果进行内容分析
六、有监督学习方法
基于词汇化的隐马尔可夫模型(HMM)和依存句法树结构的结合条件随机场(CRF)
