人工智能(11)爬虫简介_人工爬虫什么意思-程序员宅基地

技术标签: 爬虫  python  人工智能  

爬虫简介


1.1 什么是网络爬虫
1.1.1 爬虫的简单定义    
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

简单来说:使用事先写好的程序去抓取网络上所需要的数据,这样的程序就叫网络爬虫。

1.1.2 爬虫的分类
网络爬虫可以分为通用网络爬虫(如搜索引擎的爬虫,根据几个URL的种子不断的去抓取数据)和聚焦网络爬虫(有选择性的抓取预先定义好的主题和相关页面的网络爬虫)。

A.通用网络爬虫:   
        搜索引擎中第一步就是爬虫,但是搜索引擎中的爬虫是一种广泛获取各种网页的信息的程序。除了HTML文件外,搜索引擎通常还会抓取和索引文字为基础的多种文件类型,如TXT,WORD,PDF等; 但是对于图片,视频,等非文字的内容则一般不会处理,另外对于脚本和一些网页中的程序也是不会处理的。

B.聚焦网络爬虫:
        针对某一特定领域的数据进行抓取的程序。比如旅游网站,金融网站,招聘网站等等;特定领域的聚集爬虫会使用各种技术去处理我们需要的信息,所以对于网站中动态的一些程序,脚本仍会执行,以保证确定能抓取到网站中的数据。

1.2 为什么需要爬虫
1.2.1 爬虫的用途
A.解决冷启动问题:
        对于很多社交类的网站,冷启动是很困难的。对于新注册的用户而言,要留住他们,需要先注入一批假用户,已构造社区的氛围。一般这些假的用户可以通过网络爬虫从微博或其他APP中抓取而来;今日头条等互联网媒体最早也就是使用了爬虫+网页排序的技术,所以它们解决冷启动的方式也是需要爬虫;
B.搜索引擎的根基:
        做搜索引擎少不了爬虫程序;
C.建立起知识图谱,帮助建立机器学习的训练集:
        维基百科是一个较好的数据集来源;
D.可以制作各种商品的比价,趋势分析等;
E.其他:
        比如分析淘宝上竞争对手的数据;分析微博的数据传递影响力,政府的舆情分析,分析人与人之间的关系等等。

总之一句话:在当今的大数据时代,做任何价值分析的前提是数据,而爬虫则是获得这个前提的一个低成本高收益手段。

1.2.2怎么做爬虫
用Python做爬虫非常的简单,在交互式环境中简单的两行代码即可。
做一个爬虫如此简单吗?当然不是。让我们来看下要做一个爬虫工程师需要哪些知识和技能;爬虫工程师的晋级之路,网络爬虫涉及哪些技术。
初级爬虫工程师:
        1.Web前端的知识:HTML,CSS,JavaScript,DOM,DHTML,Ajax,jQuery,json等;
        2.正则表达式,能提取正常一般网页中想要的信息,比如某些特殊的文字,链接信息,知道什么是懒惰,什么是贪婪型的正则;
        3.会使用re,BeautifulSoup,XPath等获取一些DOM结构中的节点信息;
        4.知道什么是深度优先,广度优先的抓取算法,及实践中的使用规则;
        5.能分析简单网站的结构,会使用urllib或requests库进行简单的数据抓取。
中级爬虫工程师:
        1.了解什么是Hash,会使用简单的MD5,SHA1等算法对数据进行Hash以便存储;
     2.熟悉HTTP,HTTPS协议的基础知识,了解GET,POST方法,了解HTTP头中的信息,包括返回状态码,编码,user-agent,cookie,session等;
        3.能设置User-Agent进行数据爬取,设置代理等;
        4.知道什么是Request,什么是Response,会使用Fiddler, Wireshark等工具抓取及分析简单的网络数据包;对于动态爬虫,要学会分析Ajax请求,模拟制造Post数据包请求,抓取客户端session等信息,对于一些简单的网站,能够通过模拟数据包进行自动登录;
        5.对于比较难搞定的网站,学会使用浏览器+selenium抓取一些动态网页信息;
        6.并发下载,通过并行下载加速数据抓取;多线程的使用。
高级爬虫工程师:
        1.能使用Tesseract,百度AI,HOG+SVM,CNN等库进行验证码识别;
        2.能使用数据挖掘的技术,分类算法等避免死链等;
        3.会使用常用的数据库进行数据存储,查询,如Mongodb,Redis(大数据量的缓存)等;下载缓存,学习如何通过缓存避免重复下载的问题;Bloom Filter的使用;
        4.能使用机器学习的技术动态调整爬虫的爬取策略,从而避免被禁IP封号等;
        5.能使用一些开源框架Scrapy, Scarpy-Redis,Celery等分布式爬虫,能部署掌控分布式爬虫进行大规模的数据抓取。

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_62703957/article/details/125533303

智能推荐

1024程序员节,送18本技术书籍给大家,祝大家节日快乐_1024送书-程序员宅基地

文章浏览阅读1.9w次,点赞167次,收藏214次。新的资源等你来去,永久免费哦~【作者注】: 1024已经过去了,本文的送18本书的活动也已经结束了(原文内容已经删除)。考虑到该文章可能还会被一些朋友看到,所以我在这留了一波福利,永久有效,希望能对大家有用,也希望大家能够感受到我一片心意。免费给大家赠送一波很有价值的架构师视频教程,总共四个阶段,非常棒的资源。领取方式如下:扫描上方二维码关注我的公众号『程序员私房菜』,在公众号内回..._1024送书

Spring .NET框架概览-程序员宅基地

文章浏览阅读68次。Spring.NET 是一个关注于.NET企业应用开发的应用程序框架。它能够提供宽广范围的功能,例如依赖注入、面向方面编程(AOP)、数据访问抽象, 以及ASP.NET集成等。基于java的spring框架的核心概念和价值已被应用到.NET。Spring.NET 1.0 包含一个完全功能的依赖注入容器和AOP库。后续的发布将包含对ASP.NET、Remoting和数据访问的支持。下图展现出了 Sp..._.net spring.core spring.data spring.service 框架

String 和 StringBuffer 的对比总结_比较string和stringbuffer的区别-程序员宅基地

文章浏览阅读228次。String 和 StringBuffer 的对比总结1,从基本概念上来说,String是一个类,一旦生成对象,就不可修改了。进行2个字符串操作时,需要生成一个新的字符串对象,实际上操作的是2个对象。StringBuffer也是一个类,和String不同的是,StringBuffer是一个字符串池。2,从内存分配上来说,String对象一旦生成,内存就是固定的,这就是我们说String不可..._比较string和stringbuffer的区别

Cmakelist 将头文件进行编译_cmakelist 如何编译.h-程序员宅基地

文章浏览阅读763次。include_directories ("${PROJECT_SOURCE_DIR}/include")之后就可以在Cpp 文件中直接用include 中的头文件了#include "all_include_files.h"_cmakelist 如何编译.h

SQL— 创建计算字段(以 PostgreSQL为例)_postgres 计算字段-程序员宅基地

文章浏览阅读2.4k次。拼接字段 — 生成一个供应商报表,返回供应商名称和地址SQL 语句select vend_name || '(' || vend_country || ')'from vendorsorder by vend_name输出------------------------------------Bear Emporium (USA )Bear R Us_postgres 计算字段

限制对比度的自适应直方图均衡化(CLAHE)在opencv中的使用_clahe->apply-程序员宅基地

文章浏览阅读1.4w次,点赞5次,收藏30次。1.CLAHE简介 HE直方图增强,大家都不陌生,是一种比较古老的对比度增强算法,它有两种变体:AHE和CLAHE;两者都是自适应的增强算法,功能差不多,但是前者有一个很大的缺陷,就是有时候会过度方法图像中相同区域的噪声问,为了解决这一问题,出现了HE的另一种改进算法,就是CLAHE;CLAHE是另外一种直方图均衡算法,能有效的增强或改善图像(局部)对比度,从而获取更多图像相关细节_clahe->apply

随便推点

入职IT岗位,如何做一份出彩的简历_简历如何出彩 it行业-程序员宅基地

文章浏览阅读502次。工作信息千万条,应聘上才是第一条。简历不出彩,何以博眼球?面试过的同学可能都知道,行业千千万万,但只有那些专业性特别强,像IT行业、金融行业之类的工作需要你的简历必须出彩,不能光只有基本信息。一份基本的简历,是我们和人事交流的开始;一份真正好的简历,才是通向一份好工作的敲门砖。那么如何在众多求职者投递的简历当中脱颖而出,一眼被HR相中,这是一门学问,值得我们去认真对待。当我还在学校的时候,从不曾想到过这个问题。制作的简历自然也是平平无奇,因为确实不知道面试官需要求职者应该具备如何的闪光点。._简历如何出彩 it行业

易优cms 多语言版本的分页变量修改_eyoucms后台页面修改-程序员宅基地

文章浏览阅读961次。在使用多语言版本时,遇到了分页没有多语言时怎么处理?这个需要改动分页PHP文件,文件目录 根目录corelibrary hinkpaginatordriver。Eyou.php是PC端,Mobile.php是手机端然后打开Eyou.php修改PC端分页打开后找到下面代码,替换红色部分1,大改在97行 /** * 共N页 N条 * @param string $t..._eyoucms后台页面修改

Android O(8.0) Keyguard之启动流程_android keyguardbouncer-程序员宅基地

文章浏览阅读1.8k次。今天开始梳理SystemUI Keyguard源码话不多说首先从启动流程开始:起点是在 SystemUI/src/com/android/systemui/SystemUIService.javaonCreate() -> ((SystemUIApplication) getApplication()).startServicesIfNeeded();启动SystemUI各..._android keyguardbouncer

数据扁平化-程序员宅基地

文章浏览阅读6.4k次,点赞3次,收藏23次。什么是扁平化数组的扁平化,就是将一个嵌套多层的数组 array (嵌套可以是任何层数)转换为只有一层的数组。举个例子,假设有个名为 flatten 的函数可以做到数组扁平化,效果就会如下:var arr = [1, [2, [3, 4]]];console.log(flatten(arr)) // [1, 2, 3, 4]一、递归我们最一开始能想到的莫过于循环数组元素,如果还是一个数..._数据扁平化

PPPOE和pppd的流程详解--good_pppd pppoe-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏18次。PPD是用户态应用程序,负责PPP协议的具体配置,如MTU、拨号模式、认证方式、认证所需用户名/密码等一 终端 终端介绍 终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。看下面一副图展示了计算机系统与终端之间得联系。 终端驱动程序的主要功能是在程序与相关设备之间进行数据传递。在一个LINUX内核自身的内部_pppd pppoe

npm安装包时太慢怎么办?使用淘宝镜像站 or 切换官方镜像站_macos npm install 很慢-程序员宅基地

文章浏览阅读1.4k次。当使用 npm install <package> 时,由于 NPM 默认镜像站是在国外的原因,会导致下载速度非常慢,甚至下载失败。可以切换为国内的 淘宝镜像站临时使用(仅对本次有效)npm install <package> --registry https://registry.npm.taobao.org/长期使用(推荐,如果需要 发布 NPM 包 的话,不能使用这种配置,需要改回原镜像源)npm config set registry https://regist_macos npm install 很慢

推荐文章

热门文章

相关标签