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