web数据采集核心技术分享系列(四)利用神经网络实现网页验证码破解

优采云 发布时间: 2021-08-19 02:04

  web数据采集核心技术分享系列(四)利用神经网络实现网页验证码破解

  目录:

  web data采集核心技术分享系列(一)做一个强大的web data采集系统,你需要什么?

  web data采集核心技术分享系列(二)如何提取信息?字符串?正则?Xpath?Xslt?自定义?...什么是王道?

  web data采集核心技术分享系列(三)如何破解验证码?图像分析?特征匹配?人工智能?第三方集成?...哪个最强大?

  web data采集核心技术分享系列(四)利用神经网络实现网页验证码破解

  应各位热心网友的要求,特建立QQ群:254764602,欢迎大家进群讨论,互相学习。

  请输入密码“data采集”加入群组,否则请勿添加

  Part 1 web data采集核心技术分享系列(一)做一个强大的web data采集系统,你需要什么?刚发布,晚上想休息一下写第二部分,看到几个热心的园友给我留言,他中午根本没休息,就写了第二个。

  废话不多说,切入正题,网页信息提取难的关键在于诸多不确定性。各种提取方式我们罗列出来分析一下,看哪个最合适(注:最后一条评论有网友说没有王道,只有最合适。我觉得有道理,看看哪个最合适).

  1.网页结构变化频繁

  2.网页内容变化,非常复杂

  3.each网站采用的前端技术千差万别

  4.Html 是松散技术,各大厂商互不兼容

  。 . . . .

  第一个是结构性变化。例如,您感兴趣的数据表。它曾经在网页的左侧,现在在右侧。这主要是位置的变化,或者你感兴趣的数据原来在表格的第一行。 网站在第一行加了一个广告,导致你的数据跑到了第二行。如果使用字符串定位,在数据开始之前找到网页的字符串,在数据末尾找到字符串,然后在开始之前的表Head,现在开始之前是广告。如果继续使用之前的配置进行爬取,广告也会被抓到。显然,灵活性相对较差。当然,string方式的优势也很明显。很简单。当然,您可能想要。最简单的,这个最合适,但我觉得这不是王道,我们继续寻找王道

  其次,内容变化复杂。一个网页可能有成百上千的数据或几段文字。每个页面里面的具体内容并不完全一样。正则表达式用于匹配一段文本中的一个或多个字符串,对匹配具有一定格式或固定部分内容的文本有很好的效果,但在网页数据采集中,除此之*敏*感*词*,例如,假设一个表有10行,每行的数据非常相似。如果你只想提取一行的数据,因为正则没有处理网页元素位置的能力,忽略了页面格式,单纯依赖Text,所以很难准确匹配你的那一行想。很可能会匹配很多文本,因为文本相似。随着页面内容的复杂性和相似性,正则化效果会变差。看来正则化只适合提取文本特征明显且固定的小页面。

  第三和第四,我们实际上可以一起讨论。大家都知道网站的内容很多是html,有的shtml,还有php、asp、jsp,有的用js框架,有的用Ajax等,导致浏览器中的源文件差别很大。另外,各大浏览器厂商互不兼容,甚至同一个浏览器中的同一个网页,源文件也不一样,更别提显示效果了。熟悉xslt的应该都知道,xslt里面有xpath,其实就是一种对xml进行转换的技术,意思是可以从一个xml中提取信息到另一个xml。这里有两个关键点,一个是xml,xml的优点是可以组织各种复杂的数据及其内部关系。提取正是我们想要做的。有了这两个,剩下的就是如何将网页转成xml了。如果问题解决了,我们就完美解决了从网页中提取数据的问题。有许多大牛试图这样做。我会提到我见过的最好的之一。如果你没用过,你可以看看。 HtmlAgilityPack,网上对这个类库的好评如潮,看似完美的解决了问题,但是深入研究它的代码后,你会发现问题不是他的代码,而是事情本身的可行性,很多页面根本不符合规范,即使它们符合规范,都是奇怪的。最终的问题是无法完美的将网页,或者html转为xml。很多时候转换后的xml的结构和内容与网页本身不符,也就是说两个不能提取信息或者提取错误信息也就不足为奇了。多次尝试修改源代码后,发现各种特殊情况层出不穷,无法完全做到。记得有句话叫“走错路,跑也没有用”。这是同样的原因。

  既然xslt不是王道,那它会依赖xpath吗?根据我的个人经验,没有可以超越 xpath 的自定义解决方案。我们可以从xpath的本质中找到原因。

  看百度百科上xpaht的定义:XPath是一种在XML文档中查找信息的语言。 XPath 用于浏览 XML 文档中的元素和属性。基于之前对xml的理解,可以稍微扩展一下。 XPath 是一种用于在复杂结构化数据中查找信息的语言。看到这句话是不是觉得更有信心了?网页是一种复杂的数据结构。我们要做的就是寻找信息。网页也由网页元素和属性组成。然而,事情并没有那么简单结束。我们已经找到了正确的道路,但是这条道路有一个必须解决的重要障碍。您还知道我们如何在网页上执行 xpath 查询。先不说这东西是怎么实现的,有多复杂。就可行性而言,该方案是可行的。 ,我们要做的是一个网页的xpath引擎。如果我们要扩展它,它实际上涉及很多方面。它可能不会在一个系列中完成。讨论具体的实现超出了本文的范围。开始讨论,欢迎大家互相批评和交流。 xpath 是王者吗?你怎么看?

  PS:由于本人能力有限,虽然在web data采集领域奋斗了多年,但无法在web data采集的各个方面提供最强大的解决方案和思路。还请看官。在相互交流和学习的态度上批评和纠正,共同进步和成长。欢迎留言。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线