我遇到了这个问题,我需要抓取大量不同的HTML数据源,每个数据源都包含一个包含大量行的表格,例如国家/地区名称,电话号码,每分钟价格。
我想建立一些半自动刮刀,试图......
自动在HTML页面中找到正确的表格, - 可能通过在文本中搜索某些示例数据并尝试查找包含
提取行 - 通过查看上面的两个元素并选择相同的模式
确定哪个列包含哪些内容 - 通过使用一些模糊算法来最好地猜测哪个列是什么。
将其导出到某个python / other列表 - 清洁每一件事。
这看起来像一个好的设计吗?如果你在python中编程,你会选择使用哪些工具?
答案 0 :(得分:4)
这看起来像一个好的设计吗?
没有
如果你在python中编程,你会选择使用哪些工具?
美丽的汤
自动在HTML页面中找到正确的表格, - 可能是通过在文本中搜索一些示例数据并尝试查找包含两者的公共HTML元素
糟糕的主意。更好的想法是编写一个简短的脚本来查找所有表,将表和XPath转储到表中。一个人查看表并将XPath复制到脚本中。
提取行 - 通过查看上面两个元素并选择相同的模式
糟糕的主意。更好的想法是编写一个简短的脚本来查找所有表,使用标题转储表。一个人查看该表并配置一小段Python代码,以将表列映射到一个named元组中的数据元素。
确定哪个列包含什么 - 通过使用一些模糊算法来最好地猜测哪个列是什么。
一个人可以做到这一点。
将其导出到某个python /其他列表 - 清理everytihng。
几乎是一个好主意。
一个人选择正确的XPath到桌面。一个人写一小段代码来将列名映射到一个namedtuple。给定这些参数,然后Python脚本可以获取表,映射数据并产生一些有用的输出。
为什么要包括一个人?
因为网页充满了臭名昭着的错误。
在过去三年这样做之后,我很确定模糊逻辑和神奇的“试图找到”和“选择相同的模式”不是一个好主意,也不行。
编写一个简单的脚本来创建页面的“数据配置文件”会更容易。
编写简单的脚本更容易读取配置文件并进行处理。
答案 1 :(得分:0)
我看不到更好的解决方案。
使用XPath查找正确的表格很方便。