我有这个问题,我需要抓取很多不同的 HTML 数据源,每个数据源都包含一个包含很多行的表格,例如国家名称、电话号码、每分钟价格。
我想 build 一些半自动刮板,它会尝试......
在 HTML 页面中自动找到正确的表格, -- 可能通过在文本中搜索一些样本数据并尝试找到包含这两种数据的通用 HTML 元素
提取行 -- 通过查看以上两个元素并选择相同的模式
确定哪一列包含什么 -- 通过使用一些模糊算法来最好地猜测哪一列是什么。
将其导出到一些 python/其他列表 -- 清洁一切。
这看起来是个不错的设计吗?如果你用 python 编程,你会选择什么工具来完成它?
最佳答案
does this look like a good design ?
没有。
what tools would you choose to do it in if you program in python ?
美丽的汤
find automatically the right table in the HTML page, -- probably by searching the text for some sample data and trying to find the common HTML element which contain both
坏主意。一个更好的主意是编写一个简短的脚本来查找所有表,将表和 XPath 转储到表中。一个人查看表格并将 XPath 复制到脚本中。
extract the rows -- by looking at above two elements and selecting the same patten
坏主意。一个更好的主意是编写一个简短的脚本来查找所有表格,转储带有标题的表格。一个人查看表格并配置一小段 Python 代码以将表格列映射到命名元组中的数据元素。
identify which column contains what -- by using some fuzzy algorithm to best guess which column is what.
一个人可以轻松做到这一点。
export it to some python / other list -- cleaning everytihng.
几乎是个好主意。
一个人为表选择正确的 XPath。一个人编写了一小段代码来将列名映射到命名元组。给定这些参数,Python 脚本就可以获取表格、映射数据并生成一些有用的输出。
为什么要包括一个人?
因为网页充满了众所周知的错误。
在花了过去三年的时间做这件事之后,我很确定模糊逻辑和神奇的“试图找到”和“选择相同的模式”不是一个好主意,也行不通。
编写一个简单的脚本来创建页面的“数据配置文件”会更容易。
编写一个简单的脚本来读取配置文件并进行处理会更容易。
关于python - 智能自动抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6852061/