自动采集(大数据时代,如何高效地获取数据?——网络爬虫)
优采云 发布时间: 2021-10-31 10:05自动采集(大数据时代,如何高效地获取数据?——网络爬虫)
摘要:人类已进入大数据时代。大数据产生了巨大的社会和商业价值。如何高效获取数据成为提升未来竞争力的关键要素。网络爬虫是一种高效的信息采集工具,可以快速准确地采集我们想要的各种数据资源。但是,随着互联网和Web技术的发展,各种反爬虫措施的使用给网络资源带来了很多困难采集。因此,为了准确、高效地采集获取所需的数据,网络爬虫也采取了有针对性的对策。本文介绍了网络信息自动化采集技术相关的基本概念和原理,
关键词:网络资源采集;反爬虫;易碎;硒
0 前言
人类社会已经进入大数据时代,大数据深刻影响和改变着我们的工作和生活。随着互联网、移动互联网、社交网络等的快速发展,产生了海量的大数据,蕴含着前所未有的社会和商业价值。特别是随着人工智能浪潮的兴起和深度学习技术的突破,数据已经成为工程和研究领域不可或缺的一部分。大数据已成为21世纪最重要的经济资源之一。正如马云所说:未来最大的能源不是石油,而是大数据。如何高效获取数据,清理互联网上的非结构化数据,获取结构化数据,
1网络资源采集基本原理和基本原理
把互联网比作一个巨大的网络,互联网上的每一个节点就相当于这个互联网上的一个节点,而采集的程序就相当于互联网上的一只小蜘蛛。按照自定义规则,批量获取所需的资源数据,就是这个“小蜘蛛”要完成的任务。因此,网络资源采集也被称为Webcrawler或Webspider。简单的说,网页资源采集就是一个获取网页并提取和保存信息的自动化程序。主要分为三个步骤。
1.1获取网页
爬虫首先要做的就是获取网页,即获取网页的源代码。源码中收录了网页的一些有用信息,所以获取源码后,就可以从中间提取想要的信息了。Python中提供了很多库来实现源码获取,比如urllib、requests等。
1.2 提取信息
获取到网页的源代码后,我们需要对网页的源代码进行分析,从中提取出想要的数据。由于网页的结构具有一定的规则性,因此可以根据网页节点、CSS 选择器或 XPath 选择器的属性提取网页信息。常用的库有 BeautifulSoup、pyquery、lxml 等。
1.3保存数据
提取信息后,我们需要将数据保存在某处以备后续使用。保存的方式有很多种,可以简单的保存为TXT文本或者JSON文本,也可以保存到数据库中,比如MySQL或者MongoDB。此外,网络资源自动化采集需要满足以下原则:实时性原则、完整性原则、可靠性原则、准确性原则、易用性原则[2]。
2自动化网络资源采集现阶段主要难点
互联网信息资源丰富,但非常分散。不同的 网站 结构并不是 一、 复杂的布局和多样化的渲染方法。对于不同的网站,通常需要有针对性的配置才能达到要求。数据。此外,很多网站也会采取一系列“防爬”措施,比如:(1)使用验证码验证用户不是机器人;(2)设置登录验证,用户登录后才能获取相关内容;(3)使用动态页面,目前很多网页使用JavaScript进行页面渲染,或者使用JS动态生成请求参数和JS混淆加密防止网络爬虫无法访问;(4)IP 被阻止。对于单位时间内访问次数过多的IP,很多网站会阻塞IP,无法访问;(5)字体混乱,部分网站实际页面显示网页中的文字和数字与网页源代码中的值不一样。虽然爬虫采集能正常运行,得到的数据与实际数据不符,面对不同的问题,需要采取有针对性的对策,控制措施,爬虫和反爬虫技术在本次比赛中逐渐发展起来[3-4]。能正常运行,得到的数据与实际数据不符。面对不同的问题,要采取有针对性的对策。控制措施。爬行动物和反爬行动物技术在这场竞争中逐渐发展起来[3-4]。能正常运行,得到的数据与实际数据不符。面对不同的问题,要采取有针对性的对策。控制措施。爬行动物和反爬行动物技术在这场竞争中逐渐发展起来[3-4]。
3网络资源采集现阶段解决难点的技术手段
本节总结了笔者在网络资源采集工作中遇到的一些问题以及解决问题的主要技术手段。
3.1 请求头 User-Agent 验证
常见的简单反爬措施,网站验证User-Agent方法判断请求是否为正常浏览器行为,如果发现非法UA,则返回错误响应。突破方法:在请求头中添加浏览器的User-Agent字符串即可。在*敏*感*词*采集的过程中,可以使用UA池或者调用fake_useragent模块自动动态生成User-Agent并添加。
3.2用户身份Cookie验证和JWT验证
大多数网站会在Cookie中以键值对的形式保存登录的用户信息。服务器收到请求后首先验证用户的身份,如果验证失败则返回错误响应。JWT 认证的形式与 Cookie 大致相同。区别在于身份信息是请求头中特定的 JWT 字符串,而不是 Cookie。突破方法:通过浏览器登录后,对登录后的cookie或JWT字符串进行抓取分析,爬虫操作时,在请求中添加对应的cookie或在请求头中添加对应的字符串,得到正确的响应。在使用Scrapy框架开发爬虫的过程中,
3.3 动态页面爬取
目前很多网站都会使用JavaScript、Ajax(异步JavaScript和XML)技术和动态HTML(dynamicHTML)技术进行页面渲染,生成动态页面,可以让页面更丰富,交互功能更强,而且也可以反转。爬虫。突破方法:Selenium 是一个有效的工具。Selenium 是一个强大的网络数据工具采集。它最初是为 网站 自动化测试而开发的。它允许浏览器自动加载页面并获取它需要的数据,甚至是页面截图,或者判断是否发生了对网站的某些操作。Selenium 没有浏览器,所以需要配合第三方浏览器使用,比如火狐、Chrome、PhantomJS(如果使用火狐,需要安装 GeckoDriver 驱动,如果您使用 Chrome,则需要安装 ChromeDriver 驱动程序)。使用 Selenium 可以处理 cookie、JavaScript、headers 等,并模拟浏览器在访问网页时执行的任何操作。此外,还可以使用Scrapy框架配合Splash服务,为ajax网页的内容动态生成JS和采集。该方法可以完成Scrapy框架中的动态内容采集,方便scrapyd执行整个爬虫项目的任务。调度更适合大型采集项目。Scrapy 是一个用 Python 实现的应用框架,用于抓取 网站 数据并提取结构化数据。Scrapy 使用 Twisted 异步网络库来处理网络通信。该框架集成了5个高度可扩展的组件和封装良好的中间件模块,可以高效(爬取效率和开发效率)和高度定制的采集需求来完成网站数据爬取任务。Splash 是一种 Javascript 渲染服务。它是一个实现 HTTPAPI 的轻量级浏览器。Splash 是用 Python 实现的,同时使用 Twisted 和 QT。Twisted(QT)用于让服务具有异步处理能力,以充分发挥webkit的并发能力。在docker中下载安装Splash镜像后,启动Splash服务,python install scrapy_splash。在 Scrapy 项目中添加 Splash 服务地址后,
3.4JS动态生成请求参数和JS混淆加密
在采集的过程中,会遇到请求中的动态参数。此类参数一般由网站中的JavaScript代码生成并添加到key请求中,并解析对应的JS文件。发现JS被混淆加密,可读性极低。这种反爬措施越来越普遍,简单的爬行逻辑很容易被拒绝。突破方法:通过控制点作为JS断点,分析点击事件或定位生成加密参数的JS代码。找到生成参数的JS代码后,可以在反混淆网站中尝试反混淆清理,如果成功,就可以得到正常可读的JS代码。此时,可以模仿爬虫程序中的整个参数生成逻辑来获取参数;如果去混淆不成功或者加密逻辑过于复杂,可以尝试在python环境中直接使用PyExecJS模块执行,JS代码段也可以获取加密参数,突破反爬限制。
3.5字体混乱
在某些网站中,实际页面显示的文字和数字与网页源代码中的值不一致,导致爬虫采集正常运行,但获取的数据与实际数据不符。这是典型的字体混乱和反爬特性。此类防爬措施通过动态下载ttf、woff、woff2等混淆加密的字体文件,生成网页源代码。突破方法:首先抓包分析请求的响应过程,在每次请求后获取字体下载url,在爬虫程序中获取字体文件的响应。
3.6IP 阻塞
为了防止网络攻击和恶意爬虫,很多网站通常都会采取IP访问限制措施。单位时间内访问过多的IP地址会被阻塞限制访问,导致采集系统无法正常访问指定页面。突破方式:针对这个问题,通常采用代理IP方式。为了采集的效率和成功率,需要购买一个代理IP,然后维护一个代理IP池,将所有的代理IP放在一个池中。每次访问前获取IP。如果 IP 失效,则丢弃它,然后重新获取。IP池还需要实现自动获取新的代理IP和删除无效IP的功能,以支持高效的网络任务。
4。结论
随着互联网和移动互联网的发展,网络信息的爆炸式增长,无论是企业还是个人,越来越需要网络资源自动化采集技术的支持。与此同时,各种新的“反爬虫”策略层出不穷,对网络资源采集系统的要求也越来越高。对于企业来说,拥有一个比较好的网络资源采集系统,可以帮助企业在资源采集和整合方面节省大量的人力和资金。在当前人工智能和大数据快速发展的时代,网络资源采集技术的研发也关系到未来国家和企业的综合实力。简而言之,
参考
[1]韩群欣. 网络信息资源研究采集[J].农业网信息, 2007(04):63-66.
[2] 刘水.网络信息采集及数据分析结果可视化的研究与实现[D]. 西安电子科技大学,2013.
[3]吴海燕. Internet信息采集系统的设计与实现[D].中国人民大学,2012.
[4]朱志华,张凡.网络信息资源整合现状研究[C]//中国医学信息化教育25周年暨全国医学信息化教育可持续发展*敏*感*词*,2010.
[5] 周玉智,刘占明,王博,等。网络信息自动化采集技术难点及解决方案研究[J]. 科技传播, 2013(6):204-205.
[6]涂辉,汪峰,尚清伟.Python3编程实现网络图像爬虫[J]. 计算机编程技巧与维护,2017(23):21-22.
作者:李岚清、王珩、闫晓峰,单位:国家工业信息安全发展研究中心