抓取网页数据工具( 这是简易数据分析系列第11篇文章(图)Datapreview)
优采云 发布时间: 2022-02-06 17:24抓取网页数据工具(
这是简易数据分析系列第11篇文章(图)Datapreview)
这是简易数据分析系列文章的第11期。
原文首发于博客园。
今天我们将讨论如何在 Web 表单中捕获数据。首先我们来分析一下网页中的经典表格是如何组成的。
经典的表格都是关于这些知识点的,没了。让我们编写一个简单的表单 Web Scraper 爬虫。
1.创建站点地图
我们今天的练习 网站 是
%C9%CF%BA%A3&txt道达=%B1%B1%BE%A9
爬虫的内容是爬取上海到北京的所有火车时刻表。
我们首先创建一个收录整个表格的容器,并将Type选择为Table,表示我们要抓取表格。
具体参数如上图所示,因为比较简单,就不多说了。
在此面板下向下滚动,您会发现一个不同的面板。如果你看一下,你会发现这些数据实际上是表格数据类型的分类。在这种情况下,他列出了火车、出发站和行驶时间的类别。
在表格列类别中,默认勾选每行内容旁边的选择按钮,这意味着默认捕获这些列的内容。如果您不想爬取某种类型的内容,只需去掉相应的复选框即可。
当你点击保存选择器按钮的时候,你会发现Result键的一些选项报错,说invalid format format无效:
解决这个错误非常简单。一般来说,Result 键名的长度是不够的。您可以添加空格和标点符号。如果仍然出现错误,请尝试更改为英文名称:
解决错误并保存成功后,我们就可以按照Web Scraper的爬取例程来爬取数据了。
2.我为什么不建议你使用 Web Scraper 的表格选择器?
如果按照刚才的教程,感觉会很流畅,但是看数据的时候,就傻眼了。
刚开始爬的时候,我们先用Data preview预览数据,发现数据很完美:
抓取数据后,在浏览器的预览面板中预览,会发现trains一栏的数据为null,表示没有抓取到相关内容:
我们下载捕获的CSV文件并在预览器中打开后,我们会发现出现了列车号的数据,但是出发站的数据又为空了!
这不是傻子!
我已经研究这个问题很长时间了。应该是Web Scraper对中文关键词索引的支持不是很友好,所以会抛出一些奇怪的bug,所以不建议大家使用它的Table功能。
如果真的要抓取表数据,可以使用前面的方案,先创建一个Element类型的容器,然后在容器中手动创建一个子选择器,这样就可以避免这个问题了。
以上只是一个原因,另一个原因是,在现代 网站 中,很少有人再使用 HTML 原创表格了。
HTML 为表格提供了基本的标签,例如 、 、 等,这些标签提供了默认样式。优点是可以在互联网刚开发的时候提供开箱即用的表格;缺点是样式过于简单,不易定制。后来很多网站用其他标签来模拟表格,就像PPT用各种大小的块组合成表格一样,很容易自定义:
正因如此,当你使用Table Selector匹配一个表格的时候,可能会匹配不上,因为从Web Scraper的角度来看,你看到的表格是*敏*感*词*的,根本不是原装的,自然不是。认可。
3.总结
我们不建议直接使用 Web Scraper 的 Table Selector,因为它对中文支持不是很友好,也不太适合现代网页。如果有抢表的需求,可以使用之前创建父子选择器的方法来做。