鹰教程网页采集器

优采云 发布时间: 2020-08-08 18:31

  [模块和操作员]常见问题更新日志作者和捐赠列表主题: 案例: 发表文章: 故事: Web Collector

  

  网络采集器的主界面

  1. 快速使用说明

  网页采集器模拟浏览器的设计,填写URL,单击刷新,即可获取对应地址的html源代码.

  识别出网页是树(DOM)后,每个XPath都对应一个属性,您可以从网页中获取单个或多个文档. 网页采集器的目的是通过手动或自动配置更快地找到最佳的XPath.

  1.1. 工作模式

  要使用采集器,请首先根据爬网目标选择适当的工作模式:

  注意:

  1.2. 基本操作

  在多文档模式下,通常单击右上角会感到幸运,在弹出结果下选择所需的数据,然后配置其名称和XPath. 单击确定以完成配置. 您可以自动获取大多数网页的目标内容.

  [图像上传失败...(image-57cdac-30)]

  您可以手动填写搜索字符,可以在网页上快速找到元素和XPath,还可以在多个结果之间快速切换. 找到所需的数据后,输入属性名称并手动添加属性.

  1.3. 高级功能单击[Http请求详细信息],可以修改网页编码,代理,cookie和请求方法等,如果网页出现乱码,则可以自动登录或获取动态页面的真实地址(ajax),并填写搜索字符,单击[自动*敏*感*词*],在弹出的浏览器中转到相应的关键字,Hawk会自动捕获实际请求. 在超级模式下,Hawk会将源代码中的js,html和json转换为html,因此我感到很幸运,虽然更为通用,但性能却很差. 填写[共享源]. 该采集器将同步共享源的[Http请求详细信息],以避免重复设置cookie代理. 详细信息页面(单一文档模式)也可以是幸运的(Hawk3的新功能),搜索必填字段,无需添加到属性列表中,请单击“我很幸运”尝试!网页地址也可以是本地文件路径,例如D: \ target.html. 以其他方式保存网页后,通过Hawk来分析网页内容

  

  我在单文档模式下很幸运

  Web采集器不能单独工作,而是Web采集器和数据清理之间的桥梁. 本质上,网页采集器是专门为获取网页而定制的数据清理模块.

  2. 高级配置介绍2.1. 列出根路径

  列表的根路径是XPath所有属性的公共部分,它可以简化XPath的编写并提高兼容性. 只能在多文档模式下工作.

  您可以通过Hawk自动分析根路径,也可以手动进行设置.

  2.2. 自动协议列表路径

  以一个例子来说明. 幸运后,嗅探器将找到列表节点的父节点,并在父节点上安装多个子节点以形成树结构

  应为每个节点提取以下属性:

  为了获得所有在父节点下的div子节点,列表的根路径为/ html / div [2] / div [3] / div [4] / div. 注意: 父节点路径的末尾没有序列号,因此可以获得多个子节点. 可以理解,列表的根路径是父节点的路径,没有结束编号.

  有时,父节点的xpath不稳定. 例如,在北京和上海的二手房页面上,上海将在列表中添加广告横幅,以便真正的父节点会发生变化,例如向后. 将div [1]移至div [2]. 为了应对这一更改,通常的做法是手动修改[列表根路径]

  2.3. 手动设置根路径

  继续该示例,父节点的ID是house_list,并且在网页中是全局唯一的,您可以使用另一个父节点表示法/// * [@@ id ='house_list'] / li(用于编写,请参阅其他XPath教程),并且子节点表达式保持不变. 这将使程序更强大.

  3. 抓取网页数据

  网页采集器需要与数据清理一起使用,才能使用网页采集器获取网页数据. 拖动的列必须是超链接

  3.1. 通用获取请求

  在通常情况下,将转换从采集器拖到相应的URL列中,然后通过下拉菜单选择要调用的采集器的名称以完成所有配置:

  

  请求配置

  此模块是Web采集器和数据清理之间的桥梁. 本质上,网页采集器是专门为获取网页而定制的数据清理模块.

  您需要填写采集器选择,并告诉它要调用哪个采集器. 注意:

  3.2. 实施发布请求

  在Web请求中,主要有两种请求类型: post和get. 使用POST可以支持更多数据的传输. 有关更多详细信息,您可以参考http协议的相关文档. 互联网上出汗很多,所以我在这里不再赘述.

  在发出发布请求时,Hawk需要将两个参数传递给服务器: URL和发布. 一般来说,执行发布请求时,URL是稳定的,发布值是动态更改的.

  首先,将被调用的网页采集器配置为发布模式(打开网页采集器,Http请求详细信息,模式->下拉菜单).

  之后,您需要将转换从采集器拖到要调用的url列. 如果没有网址列,则可以添加新列以生成要访问的网址列.

  之后,我们会将帖子数据传递给Web采集器. 您始终可以组合多个列或各种方法来生成要发布的数据列. 然后,您可以在从爬网程序转换的帖子数据中填写[帖子列],而帖子列是收录帖子数据的列的名称. 注意:

  4. 我很幸运

  这是Hawk最受好评的功能!在新的Hawk3中,此功能得到了大大增强.

  4.1. 多份文件让我感到幸运

  一般来说,输入URL加载页面后,只需单击“我很幸运”,Hawk就会根据优先级自动获取列表数据

  

  我的配置很幸运

  [图像上传失败...(image-9f6836-30)]

  左右切换以选择所需的数据集,然后在下面的属性栏中微调结果.

  添加一个属性,如果幸运的话,您可以更准确地进行操作. 添加两个属性以选择唯一区域.

  4.2. 我在单文档模式下很幸运

  Hawk3的新功能. 当网页收录数十个属性时,一一添加这些属性将变得特别麻烦. 这在某些产品属性页面中尤其常见.

  为了解决此问题,请在搜索字符中添加关键字. 此时不要将它们添加到属性列表中,只需单击“我很幸运”.

  

  我在单文档模式下很幸运

  4.3. 手动模式

  当您感到幸运,无法正常工作或不符合期望时,您需要手动指定一些关键字,让Hawk搜索这些关键字,然后获取网页上的位置(XPath).

  填写搜索字符,您可以成功获取XPath,写入属性名称,然后单击“添加”以添加属性. 同样,填写30535并将属性名称设置为“单价”以添加另一个属性.

  

  手动添加属性

  在搜索字符的文本框中,输入要获取的关键字. 由于关键字可能在网页上多次出现,因此您可以继续搜索并在多个结果之间切换. 左侧的html源代码将突出显示搜索结果.

  请注意观察搜索到的关键字在网页上的位置是否符合预期,否则可能会导致数据抓取问题. 特别是在多文档模式下. 如果需要在此页面上捕获多个数据,则可以创建多个网页采集器并分别进行配置. 如果发现错误,则可以单击“编辑集”以删除,修改和排序属性. 您可以类似地添加要获取的所有要素字段,或单击“我很幸运”,系统将基于当前属性推断其他属性. 5.动态嗅探5.1. 什么是动态页面?

  动态瀑布流和Ajax页面,通常按需返回html和json.

  旧网站刷新后将返回页面的全部内容,但是如果仅更新部分内容,则可以大大节省带宽. 此方法称为ajax,服务器将xml或json传输到浏览器,执行浏览器的js代码,并将数据呈现在页面上. 因此,获取数据的实际URL不一定显示在浏览器地址栏中,而是隐藏在js调用中. 本质上,javascript会发起一个新的隐藏的http请求以获取数据. 只要可以对其进行仿真,就可以像实际的浏览器一样获得所需的数据. 请参阅百度百科简介

  5.2.Hawk自动获取动态请求

  您可以通过浏览器和数据包捕获来获取这些隐藏的请求,但是您需要熟悉HTTP请求的原理,这不适合初学者.

  Hawk简化了过程并采用了自动嗅探. Hawk成为后端代理,可拦截和分析所有系统级Http请求,并过滤出收录关键字的请求(基于提琴手)

  在搜索字符时,如果在当前页面上找不到该关键字,Hawk将提示“您要启用动态嗅探吗?”. 此时,Hawk将弹出浏览器并打开您所在的网页. 您可以将页面拖动到收录关键字的位置,Hawk将自动记录并过滤收录该关键字的实际请求,并且在搜索完成后,Hawk将自动反弹.

  5.3. 如果无法进行自动嗅探怎么办?

  由于Hawk具有阻止功能,因此浏览器将其视为不安全的. 如何解决?

  Hawk的基础嗅探基于Fiddler,因此可以通过Fiddler生成证书后将其导入chrome中来解决. 该方法可以参考此文档:

  按如下所示设置采集器:

  

  网页采集器请求设置

  5.4. 注意有时,您可以将URL直接复制到Hawk,即使您很幸运,也可以获取数据. 这是因为许多网站对首页和其他页面的处理方式不同. 第一页的内容将与整个框架一起返回. 但是随后页面内容通过ajax分别返回.

  有时候,第一页已经完成了许多XPath开发,但是最后发现它不能在其他页面上使用,主要是因为上面提到的问题(笨拙). 因此,根据经验,建议在请求之前转到其他页面.

  超级模式可以将网页中的所有javascript,json,xml转换为HTML DOM树,以实现属性提取并感到幸运.

  6. 超级模式

  为了使动态网页能够添加属性并感到幸运,Hawk会在嗅探之后默认打开超级模式. 超级模式可以将网页中的所有javascript,json,xml转换为HTML DOM树,从而实现属性提取,让您感到幸运.

  超级模式极大地简化了动态请求的处理,但是它可能仍然存在以下问题:

  7. 自动登录

  许多网站都需要登录才能访问其内部内容. 登录涉及非常复杂的逻辑,例如需要传递用户名和密码,验证码等,并且在多次请求之后,一系列过程(例如获取令牌,甚至编写代码)也需要编写整个页面并需要重复调试. 考虑到Hawk是通用数据采集器,因此其开发成本很高.

  但是从本质上讲,登录只是一个cookie. 只要将cookie添加到后续请求中,远程服务器就无法区分它是浏览器还是采集器. 通常,传统的采集器软件具有内置的浏览器,并且用户在其中填写用户名和密码. 该软件在内部获取Cookie后发出请求. 但是Hawk不再打算使用内置浏览器. 该方法太重了,无法与Hawk的流系统兼容. 因此,Hawk不再自动登录!

  我们采用了新的思路来解决此问题.

  Hawk的自动登录和动态嗅探使用相同的技术. 本质上,系统代理在底部被替换. 您可以在登录页面上用搜索字符填写任何文本,然后单击嗅探. . 如果此方法不起作用,您还可以在浏览器中手动将请求参数复制到网页采集器.

  有关其用法的更多详细信息,请参阅有关动态嗅探的章节.

  8. 设置用于共享请求参数的采集器的名称

  为了抓取网站的不同数据,我们需要多个Web采集器. 但是,访问该网站需要登录名和Cookie. 每个采集器是否有必要设置相应的请求参数?

  在采集器的属性对话框中,可以设置共享源,即要共享的网页采集器的名称.

  例如,如果将其设置为Lianjia采集器,则该采集器的请求参数将在执行期间从Lianjia采集器动态获取. 这大大简化了配置过程.

  

  帮助自动弹出按钮

  9. 附录: XPath和CSS编写9.1. XPath

  有关XPath语法,请参阅教程

  XPath可以非常灵活,例如:

  9.2.CSSSelector

  在大多数情况下,使用XPath可以解决问题,但是CSSSelector更简洁,更可靠. 有关其介绍,请参阅教程

  当然,大多数情况并不需要那么复杂,只需记住以下几点:

  10. 幸运的原则

  网页采集器的功能是获取网页中的数据(无意义). 一般来说,目标可以是列表(例如购物车列表),也可以是页面中的固定字段(例如JD中某种产品的价格和介绍,页面上只有一个). 因此,需要设置读取模式. 传统的采集器需要编写正则表达式,但是方法太复杂了.

  如果您意识到html是一棵树,则只需找到承载数据的节点,然后使用XPath对其进行描述.

  

  我很幸运

  手动编写XPath也非常复杂,因此该软件可以通过关键字自动检索XPath并提供关键字,并且该软件将在树中递归搜索收录数据的叶节点. 因此,关键字在页面上应该唯一.

  如上图所示,只要提供关键字“ Beijing”和“ 42”,就可以找到父节点,然后获得两个列表元素div [0]和div [1]. 通过比较div [0]和div [1]的两个节点,我们可以自动发现相同的子节点(名称,装载)和不同的节点(北京: 上海,37:42). 同一节点将被保存为属性名称,而不同节点将为属性值. 但是,不能提供北京和37. 此时,公共节点是div [0],它不是列表.

  该软件还可以使用html文档的特征来计算最有可能成为列表父节点的节点(图中的父节点),而无需提供关键字,但是当网页特别复杂时,猜想可能是错误的.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线