什么是爬虫

摘要:
根据使用场景,网络爬虫可以分为普通爬虫和集中爬虫。聚焦爬虫是一个“面向特定主题需求”的网络爬虫程序。它与一般搜索引擎爬虫的区别在于,专注的爬虫在实现网页爬行时会处理和过滤内容,并尽量确保只捕获与需求相关的网页信息。在了解了爬行动物是什么之后,我们将开始我们的爬行动物之旅。

  开始爬虫之旅。

认识爬虫

  网络爬虫(又被称为网页蜘蛛,网络机器人,spider),是一种按照一定的规则,自动地抓取互联网信息的程序或者脚本。通俗的讲就是通过程序自动去获取web页面上自己想要的数据。

  主要就是模拟浏览器打开网页,获取网页中我们想要的那部分数据。

  简单的说一下浏览器打开网页的过程:在浏览器中输入地址后,经过DNS服务器找到服务器主机,向服务器发送一个请求,服务器经过解析后发送给用户浏览器结果,包括html,js,css等文件内容,浏览器解析出来最后呈现给用户,最后就是用户看到的浏览器显示部分了。用户看到的浏览器的结果就是由HTML代码构成的,我们爬虫就是为了获取这些内容,通过分析和过滤html代码,从中获取我们想要资源。

  爬虫的基本流程主要分为4步:

  第一步、发起请求:通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应。

  第二步、获取响应内容:如果服务器能正常响应,会得到一个Response,Response的内容便是所要获取的页面内容,类型可能是HTML,Json字符串,二进制数据(图片或者视频)等类型。

  第三步、解析内容:得到的内容可能是HTML,可以用正则表达式,页面解析库进行解析,可能是Json,可以直接转换为Json对象解析,可能是二进制数据,可以做保存或者进一步的处理。

  第四步、保存数据:保存形式多样,可以存为文本,也可以保存到数据库,或者保存特定格式的文件。

  在发送请求阶段,请求方式主要有GET/POST两种类型,还有一些其他方式但是不常用。

  请求头包含User-Agent,Host,Cookies等信息,请求体是携带的数据,如提交表单数据时候的表单数据。

  服务器端会根据请求信息给出相应的响应,包括状态码,响应头和响应体,响应体里面就是我们请求的资源内容。

  从理论上来说,我们请求到什么资源就等于爬取什么样的资源,但是由于很多网站中的数据都是通过js,ajax动态加载的,所以直接通过get请求获取的页面和浏览器显示的不同。后面的随着学习的深入我们会有方法解决js渲染等问题。

  解析爬下来的数据的方式:

  1. 直接处理;
  2. Json解析;
  3. 正则表达式处理;
  4. BeautifulSoup解析处理;
  5. PyQuery解析处理;
  6. XPath解析处理。

  存储数据的方式:

  1. 文本:纯文本,Json,Xml等;
  2. 关系型数据库:如mysql,oracle,sql server等结构化数据库;
  3. 非关系型数据库:MongoDB,Redis等key-value形式存储。

  根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种。

  通用网络爬虫 是 捜索引擎抓取系统(Baidu、Google、Yahoo等)的重要组成部分。主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。

  通用网络爬虫 从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。

  聚焦爬虫,是"面向特定主题需求"的一种网络爬虫程序,它与通用搜索引擎爬虫的区别在于: 聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证只抓取与需求相关的网页信息。

  了解了爬虫是什么,接下来我们就开始爬虫之旅了。

  网络爬虫抓取过程可以理解为模拟浏览器操作的过程

  浏览器的主要功能是向服务器发出请求,在浏览器窗口中展示您选择的网络资源,HTTP是一套计算机通过网络进行通信的规则。

免责声明:文章转载自《什么是爬虫》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇关于《货币金融学》若干问题的思考《三》ORM查询相关下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

thinkphp3.2配置redis缓存和文件缓存

如果您将一些常用但不易更改的数据存储在缓存中,而不是每次检查数据库,则可以大大减轻数据库的压力。最近,由于项目的需要,您尝试了Redis,但后来使用tp3.2文件缓存直接进入主题:在config中添加以下代码。php:“DATA_CACHE_PREFIX”=˃“tp”,//缓存前缀“DATA_CCACHE_TYPE”=˃“Redis”,//高速缓存类型“Re...

季调方法论

理论与实践“季节性调整原则季节性调整方法分析季节性调整实践中遇到的问题只有同比数据缺少春节效应阅读”通货膨胀的季节性调整和预测模型“通货膨胀预测CPI的季节性调整具有明显的春节效应考虑春节效应的季节性调节春节效应的确定CPI的季节调整基于季节性调整后CPI的预测通货膨胀的修正(应对非洲猪瘟的影响)修订并扩大了季度调查方法的CPI预测读数...

部署springboot+vue项目文档(若依ruoyi项目部署步骤)

1: 部署Linux+nginx部署背景代码1.1因为我使用了idea工具进行开发,所以终端中的mvnclean包生成了相应的jar包。这个jar包可以在相应文件所在目录的目标中找到。linux服务器需要加载redis和nginx。redis存储缓存数据,nginx用于代理前端和后端服务。打包vue项目并将dist文件复制到tomcat的webapps目录中...

【Lua】使用随机数(转)

游戏中有一个用于创建角色的随机命名功能,它使用随机数。我在网上找到一篇关于在Lua使用随机数的文章。标记它。Lua需要两个函数来生成随机数:数学。randomseed,数学。数学随机种子接收整数n作为随机序列种子。将系统时间视为随机种子是很自然的,也就是说,数学随机——然后连续生成i=1,5do打印结束的随机数,但问题出现了。如果程序在短时间内运行几次,您得...

Nginx反向代理缓冲区优化

为了为不同域名的业务需求设置代理_ bufferingproxy_缓冲参数用于控制是否打开后端响应内容的缓冲区_缓冲区将缓冲到硬盘(缓冲区目录由_temp_path命令指定),...