3. 网页采集器

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

  3. 网页采集

  1.基本入门

  网页采集器模拟了浏览器的设计,填入网址,点击刷新,即可获取对应地址的html源码。

  左侧的区域,显示了html源码和浏览器视图,可通过tab页切换。右侧配置区域,可对关键字进行搜索,并对面前所有的属性进行管理。

  概念解释:

  Hawk把网页分成两种类型:

  普通文档(One)->单文档模式当你没有为网页采集器添加任何属性时,默认行为是返回只有一个数组Content的单文档,内容为整个页面。可以显式指定为NoTransform来支持这个模式。2. 纯自动模式

  由于软件不知道究竟要获取什么内容,因此须要手工给定几个关键字, 让Hawk搜索关键字, 并获取位置。填入搜索字符, 发现才能成功获取XPath, 编写属性名称,点击添加数组,即可添加一个属性。类似地,再填入30535,设置属性名称为“单价”,即可添加另外一个属性。

  在搜索属性的文本框中,输入你要获取的关键字,由于关键字在网页中可能出现多次,可连续点击继续搜索,在多个结果间切换,左侧的html源码会对搜索的结果进行高亮。

  请注意观察搜索的关键字在网页中的位置,是否符合预期,否则抓取数据可能会有问题。尤其在List模式。如果须要抓取本页面的多块数据,可新建多个网页采集器,分别进行配置。

  如果发觉有错误,可点击编辑集合,对属性进行删掉,修改和排序。

  你可以类似的将所有要抓取的特点数组添加进去,或是直接点击手气不错,系统会依照目前的属性,推测其他属性。

  3. 手气不错

  这是Hawk最被人赞誉的功能!在新的Hawk3中,该功能被极大地提高。

  3.1 List模式的手气不错

  在List模式下,一般来说,输入网址加载页面后,点击手气不错即可,Hawk会手动根据优先级将列表数据抓取下来。

  

  左右切换选择你想要的数据集,之后在下边的属性栏对结果进行微调。

  下面的图标可以全选,反选所有属性,点击删掉即可删掉选中的属性,亦可对属性名称进行更改。 点击刷新即可更新结果。

  添加一个属性,手气不错能够更准确地进行。添加两个属性,即可选取惟一区域。

  3.1 One模式的手气不错

  Hawk3新增功能,当网页中收录多达几十种属性时,挨个添加会显得非常繁琐,这在某种商品属性页非常常见。

  为了解决这个问题,将关键字加入到搜索属性中,此时不要将其添加到属性列表中,直接点击手气不错即可。

  是不是太amazing? 欢迎给作者打赏!

  3.2 原理

  网页采集器的功能是获取网页中的数据(废话)。通常来说,目标可能是列表(如购物车列表),或是一个页面中的固定数组(如JD某商品的价钱和介绍,在页面中只有一个)。因此须要设置其读取模式。传统的采集器须要编撰正则表达式,但方式过于复杂。

  如果认识到html是一棵树,只要找到了承载数据的节点即可,之后用XPath来描述。

  

  手工编撰XPath也很复杂,因此软件可以通过关键字,自动检索XPath,提供关键字,软件都会从树中递归搜索收录该数据的叶子节点。因此关键字最好是在页面中独一无二的。

  如上图所示,只要提供“北京”和“42”这两个关键字,就能找到parent节点, 进而获取div[0]和div1这两个列表元素。通过div[0]和div1两个节点的比较,我们能够手动发觉相同的子节点(name,mount)和不同的节点(北京:上海,37:42)。相同的节点会保存为属性名,不同的节点为属性值。但是,不能提供上海和37,此时,公共节点是div[0], 这不是列表。

  软件在不提供关键字的情况下,也能通过html文档的特点,去估算最可能是列表父节点(如图中的parent)的节点,但当网页非常复杂时,猜测可能会出错。

  本算法原理是原创的,可查看源码或留言交流。

  4. 结果检测

  工作过程中,可点击提取测试 ,随时查看采集器目前的才能抓取的数据内容。在属性管理器的上方,可以更改采集器的模块名称,这样就便捷数据清洗 模块调用该采集器。

  5. 对恳求进行设置

  当出现乱码,或者希望自己填入cookie等恳请头时,可在属性对话框点击恳求详情,弹出的对话框中进行设置。有时为了简便,可以将浏览器中的requests恳求头直接拷贝到恳求参数中。

  Hawk有一定的网页编码检查功能,但出现乱码时,可以将编码从GB2312设置为UTF8,即可解决大多数乱码问题。

  如何调用网页采集器,或实现Post恳求? 参考4.1节:从爬虫转换

  6. 具体的事例

  以抓取新闻内容为例:页面如下:![image_1at5pff7g7m71jtq1b2o1hlq1dt9.png-76.5kB][8]

  你可以在搜索关键字中,搜索【2016年09月21日】,属性填写为时间,搜索【人民日报】,属性为【来源】。

  提取正文须要注意,你可以随便填写正文中的一部分关键字,例如【量子隐形传态是一种传递量子】,这样Hawk就检索出了XPath:前面省略/div[1]/p[1]

  如果你直接使用这个路径,则抓取的内容只有这一段。为了抓取正文,我们可以将/p[1]部分去除,只获取其父节点。这样能够抓取全文数据(是不是很赞)?

  如果你想获取原创正文的html,则在属性列表的对话框里,可以勾选某个属性的【HTML标签】。

  此时,点击提取测试,看看是不是获取了所需的数据?

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线