爬虫的学习分析

前言

爬虫又可以称之为蜘蛛或者说是机器人,很多人肯定都听说过网络爬虫的概念,大意就是他的目标就是不断的发送http请求去爬去网页上的数据,爬虫在搜索引擎中运用的非常的广泛,但是爬虫其实并不简单,下面我给大家详细的讲述关于爬虫的一些细节,或许就有你不知道的细节哦。

爬虫算法

先来说说一个简单的爬虫算法,爬虫算法的核心就是获取网页内如,解析出其中的网页链接,再次发送请求取得里面的内容,然后循环。因此这里会需要一个种子链接地址,我们称之为种子网页。你可以把爬虫算法看成一个图算法,各个网页通过入链和出链的形式互相连接着,构成了类似于无向图的结构。在爬虫算法的中间过程中会维护一个未访问URL列表,一般放在主内存中,可以提高访问效率,访问完毕之后再移除,获取到新的链接之后再次放入。

爬虫队列

爬虫队列指的是爬虫访问到新的链接时,所存入队列的方式,因为这关系到之后将会优化访问哪些未访问的url,如果采用FIFO的方式的话,对应的爬虫就是宽度优先爬虫,就是广度优先算法类似,这个很好理解,还有另外一种就是按照优先队列的方式,这个称之为带偏好的爬虫,这类爬虫他会做的一个操作是会给即将访问的URL一个优先级值,该优先级值会根据页面价值估计计算而得。

网页链接获取

了解了爬虫的核心原理之后,就可以往细节里面再去研究,比如获取到了网页内容之后,我们如何去解析或者说是去识别出里面的链接呢,也许你会马上联系到正则表达式去匹配嘛,方便又快捷,但是你忘了一个前提,你所面对的是海量的数据,什么叫做海量,千万级,亿级别的数据。所以我们得重新选择一个好的方式,大体上来说,网页的解析过程可以简单的从超链接中获取url也可以复杂到分析HTML代码,以后者为例,你可以用获取到的HTML源代码构建一个dom树,然后一个深度优先或广度优先的方式去遍历每个标签节点,当然在这部分还可以有很多的算法优化。

链接提取和规范化

一般链接不是拿来就可以直接使用的,有些链接会有很多的无效词组成,你需要进行无效词的删除,然后从中提取出有用的url,这有点类似于搜索引擎中构建到排索引时用到的预处理方法类似。

爬虫陷阱攻击

爬虫不就是发个http请求嘛,也会对目的主机造成攻击?举个场景就能让大家马上明白,有2个网页,都是某爬虫即将要访问的url,A网页的连接为http://xxxx/a/b,也就是说是指向B网页的,然后B网页的链接为http://xxxx/b/a,也就是指向A网页的,这样就会发生一个很有意思的现象就是,A,B网页不断的爬虫访问,如此循环,最后不仅带宽被爬虫所霸占,还会导致其他正常的服务请求不能被处理,也就是造成了Dos拒绝服务攻击。解决的办法很简单,限制一下对同一个网页的访问次数。

爬虫道德

尽管爬虫的功能很单一,就是偶然想某个地址请求请求内容而已,但是如果使用不当,也会造成恶意的影响,尤其是性能很棒的爬虫,会占领一定的Web服务器资源的带宽,极端情况下就是dos攻击嘛。

礼貌的爬虫

如何做一个礼貌的爬虫:一个礼貌的爬虫应该在向某台服务器发送请求前,先去解析该服务器上的robots.txt文件,这个文件规定了任何爬虫不能爬取的内容,不仅如此,爬虫还需遵守爬虫阻止协议(虽然说并没有什么明文的规定)。当然如果某些爬虫不遵守上面说的规则,一旦被发现,可以马上封杀此ip,比如说短时间内高频率的访问某站点,就很容易被发现。

爬虫小应用

这里举一个应用到爬虫的小的场景,当然不是搜索引擎的应用场景,某些用户想要在浏览网页的时候屏蔽掉烦人的广告,想要过滤掉此类链接,这时候就可以使用带有部分爬虫功能的去广告插件,爬虫在此的作用就是爬去链接数据,识别是否是广告数据,因为广告一般都是一个大的图片上跟一个链接,识别出之后就能想干嘛干嘛了。

时间: 2024-07-29 17:23:16

爬虫的学习分析的相关文章

爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

爬虫新手学习1-爬虫基础 1.urllib和urllib2区别实例 urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下: urllib可以接受URL,不能创建设置headers的Request类实例,urlib2可以. url转码 https://www.baidu.com/s?wd=%E5%AD%A6%E7%A5%9E python字符集解码加码过程: 2.爬虫GET提交实例 #coding:utf-8 import urllib #负责url编

java网络爬虫基础学习(三)

尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=time&page_limit=20&page_start=0 浏览器打开该地址: 发现是这样的 在这里我们需要用java抓取电影的信息,首先要找到资源链接,浏览器右键->检查打开谷歌调试工具 我们可以看到下图 有很多的资源请求,在这里我是一个个搜索,看那个是电影信息的Headers 发

爬虫新手学习1-爬虫基础

一.    为什么要做爬虫?首先:都说现在是"大数据时代",那数据从何而来?企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数数据平台购买数据:数据堂.国云数据市场.贵阳大数据交易所政府/机构公开的数据:中华人民共和国国家统计局数据.世界银行公开数据.联合国数据.纳斯达克.数据管理咨询公司:麦肯锡.埃森哲.艾瑞咨询爬取网络数据:如果需要的数据市场上没有,或者不愿意购买,那么可以选择招/做一名爬虫工程师,自己动手丰衣足食.拉勾网Python爬虫职位 二.    通用

Python爬虫和情感分析简介

摘要 这篇短文的目的是分享我这几天里从头开始学习Python爬虫技术的经验,并展示对爬取的文本进行情感分析(文本分类)的一些挖掘结果. 不同于其他专注爬虫技术的介绍,这里首先阐述爬取网络数据动机,接着以豆瓣影评为例介绍文本数据的爬取,最后使用文本分类的技术以一种机器学习的方式进行情感分析.由于内容覆盖面巨大,无法详细道尽,这篇文章旨在给那些对相关领域只有少量或者没有接触的人一个认知的窗口,希望激发读者自行探索的兴趣. 以下的样本代码用Pyhton写成,主要使用了scrapy, sklearn两个

java爬虫案例学习

最近几天很无聊,学习了一下java的爬虫,写一些自己在做这个案例的过程中遇到的问题和一些体会1.学习目标         练习爬取京东的数据,图片+价格+标题等等 2.学习过程 1·开发工具           JDK1.8           IntelliJ IDEA           IDEA自带的Maven 2.使用技术           Spring Boot+Spring Data JPA       3.数据库准备 CREATE TABLE `jd_item` ( `id` b

python3网络爬虫系统学习:第一讲 基本库urllib

在python3中爬虫常用基本库为urllib以及requests 本文主要描述urllib的相关内容 urllib包含四个模块:requests——模拟发送请求 error——异常处理模块 parse——关于URL处理方法的工具模块 robotparser——通过识别网站robot.txt判断网站的可爬取内容 一.发送请求 urllib库发送请求主要使用request模块中的两个内容:urlopen()方法以及Requests类,其中Requests类是结合urlopen()方法来使用的. 首

项目系统学习分析

算一下要学的东西: 1.新闻发布系统-> ADO.NET->数据存储.MVC 2.网页爬虫-> 正则表达式.wpf.http学习 3.文件管理系统 -> i/o.多线程.wpf 4.微笑信开发-> xml 5.学籍管理系统

爬虫、网页分析解析辅助工具 Xpath-helper

参考:http://blog.csdn.net/su_tianbiao/article/details/52735399 内容: 每一个写爬虫.或者是做网页分析的人,相信都会因为在定位.获取xpath路径上花费大量的时间,甚至有时候当爬虫框架成熟之后,基本上主要的时间都花费在了页面的解析上.在没有这些辅助工具的日子里,我们只能通过搜索html源代码,定位一些id去找到对应的位置,非常的麻烦,而且经常出错.这里介绍一个chrome的xpath辅助插件给大家. 先给到下载链接:xpath-helpe

《基于深度学习的自然语言处理》中文PDF+英文PDF+学习分析

我们做自然语言处理的,主要是进行文本分析,作为人工智能的领域之一,也一定会应用深度神经网络进行处理. 近年来快速发展的深度学习技术为解决自然语言处理问题的解决提供了一种可能的思路,已成为有效推动自然语言处理技术发展的变革力量. <基于深度学习的自然语言处理>重点介绍了神经网络模型在自然语言处理中的应用.首先介绍有监督的机器学习和前馈神经网络的基本知识,如何将机器学习方法应用在自然语言处理中,以及词向量表示(而不是符号表示)的应用,然后介绍了更多专门的神经网络结构,包括一维卷积神经网络.循环神经