htmlunit 抓取网页(1.通用网络爬虫的基本结构和工作有所实现时要)

优采云 发布时间: 2022-01-08 08:04

  htmlunit 抓取网页(1.通用网络爬虫的基本结构和工作有所实现时要)

  有趣~~

  

  

  网络爬虫简介

  【可爱的脸孔】

  前言

  爬虫这个词在互联网高度发达的今天,也许你我不再陌生。互联网上每天都会产生海量的数据,如何帮助人们准确找到自己想要的信息一直是相关从业者努力改进的问题。其中,以搜索引擎为代表的应用系统是我们日常生活中最常见的表现形式。爬虫是否有助于测试工作?带着这个问题,我们先来了解一下爬虫的基本概念和原理:参考360百科就知道,网络爬虫,又称网络蜘蛛、网络机器人,是一种遵循一定规则的网络爬虫。,一种自动从万维网上抓取信息的程序或脚本。

  爬虫?? 有趣~~

  

  网络爬虫的基本结构和工作流程

  在实践中,一个通用的网络爬虫可以通过多种不同的方式实现,但总体原理是相同的。以下是笔者接触过的框架,笔者以此为背景与大家分享。

  1. 通用网络爬虫框架图:

  

  基本工作流程如下——将*敏*感*词* URL(即开始爬取的入口 URL)和配置文件交给控制器。配置文件可以收录爬取深度、文件类型、使用的账号信息以及线程数、机器人数等。 - 控制器会从待处理的URL中获取一定数量的URL,交给空闲线程去抓取对应的网页内容——每个网页处理线程在下载对应的URL中间的内容后,会将当前的URL放入已处理的URL表中。同时,处理线程将获取当前内容中的所有链接地址并与处理后的URL表进行比较,将未处理的URL放入待处理的URL表中。

  2. 实现爬虫需要注意几个方面:

  判断返回页面的状态码,需要针对有跳转的页面跟踪跳转后的URL(以下代码截取自开源java爬虫工具crawler4j)

  

  处理js动态加载:由于js在浏览器中执行后才能看到内容,所以爬虫获取时不执行,指定html标签下的内容必须为空。内容的js代码字符串,然后通过正则表达式获取对应的内容,而不是解析HTML标签。在收录以下 js 片段的页面中提取“分数”值:

  

  未通过带有“id=result”的标签找到,但可以通过正则表达式分数匹配:(\d+)。

  Ajax异步请求,在今天的网站中经常使用,一般需要用户进行交互才能返回内容。在这种情况下,可以使用一些模拟浏览器的工具,比如HtmlUnit,通过模拟用户点击操作来获取想要的数据。这种方式可能会导致系统资源消耗严重,稳定性差。另一种方式是直接拼接ajax接口参数的url来完成数据抓取。

  对于设计用于*敏*感*词*网络的爬虫,还需要考虑完成所有页面爬取所需的时间和存储资源。在这种情况下,爬虫设计应该采用分布式应用架构。这里不讨论这个。

  三、测试领域的应用

  因为我们在做测试,所以我们也想探索爬虫在自动化测试中可以拥有哪些应用程序。目前可以预见的尝试以下几个方面: - 使用爬虫遍历web服务的每个URL,检查是否有损坏的链接 - 结合selenium webdriver进行随机测试(如crawjax) - 定期更新web对象仓库UI自动化测试

  四、结束语

  我们刚刚开始对网络爬虫的研究和研究,期待在新的体验之后与您分享更多相关内容。最后附上一个开源的java爬虫工具crawler4j(下载地址:)。这个项目也是我用来学习爬虫的项目。之前的网页上有例子,有兴趣的同学可以使用。

  看不够~

  忍不住哭了~~

  

  Qtest之道

  

  

  遵循Qtest的方式

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线