Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有比lxml更好的解析html表的方法_Python_Browser_Lxml - Fatal编程技术网

Python 有没有比lxml更好的解析html表的方法

Python 有没有比lxml更好的解析html表的方法,python,browser,lxml,Python,Browser,Lxml,我正在处理html文档,如果它们是正确的表,我会撕开表来解析它们。我对结果很满意-我的提取过程成功地映射了95%以上的案例中的行标签和列标题,在没有映射的情况下,我们可以识别问题并使用其他方法 在我浏览iternet的过程中,我逐渐了解到浏览器有一个非常强大的“引擎”,可以正确显示htm页面的内容,即使底层htm格式不正确。我们在解析表时遇到的问题与无法将标题与数据行分离,或无法将行标签与一个或多个相邻数据值分离,然后无法正确解析出相邻数据值有关。(我们可能有两个数据值映射到一个列标题,而不是两

我正在处理html文档,如果它们是正确的表,我会撕开表来解析它们。我对结果很满意-我的提取过程成功地映射了95%以上的案例中的行标签和列标题,在没有映射的情况下,我们可以识别问题并使用其他方法

在我浏览iternet的过程中,我逐渐了解到浏览器有一个非常强大的“引擎”,可以正确显示htm页面的内容,即使底层htm格式不正确。我们在解析表时遇到的问题与无法将标题与数据行分离,或无法将行标签与一个或多个相邻数据值分离,然后无法正确解析出相邻数据值有关。(我们可能有两个数据值映射到一个列标题,而不是两个相邻的列标题。也就是说,如果我有一个列标题标记为apple,然后有一个列标题标记为banana,那么我可能会将值“1125 12345”分配给banana(或apple)输出中的列标题,而不是将值1125指定给apple,将值12345指定给banana

正如我在开始时所说的,我们95%的时间都是正确的,我们可以在输出中判断出什么时候有问题。我开始认为我们已经尽了最大努力,使用html的逻辑和推论来清理这些问题,所以我开始怀疑我是否需要一种新的方法

是否有一种方法可以利用浏览器的“引擎”来帮助此解析器。最终,如果浏览器能够正确显示列和行,以便它们在屏幕上正确显示,那么即使行和列跨度不一致(例如),也有一些技术可以处理


感谢大家的观察

事实上,浏览器引擎在解析HTML时故意愚蠢,假设它们得到的只是略微正确。lxml和BeautifulSoup试图模仿这种愚蠢程度,因此它们是正确的工具。

事实上,浏览器引擎在解析H时故意愚蠢TML,假设他们得到的只是略微正确。lxml和BeautifulSoup试图模仿这种愚蠢程度,因此他们是正确的工具。

要“驾驭浏览器的“引擎”,此时最好的选择是毫无疑问的——不过它的主要优势是“像浏览器一样”处理javascript(几乎没有其他选项);对于一个逻辑上被破坏的表,虽然它在渲染时可能“看起来”正常,但浏览器(因此Selenium)可能与lxml或BeautifulSoup一样无助。尽管如此,还是值得您尝试。

利用浏览器的“引擎”,此时您的最佳选择是毫无疑问的——但是它的主要优势在于“像浏览器一样”处理javascript(几乎没有其他选项);对于一个逻辑简单但呈现时可能“看起来”正常的表,浏览器(因此也是Selenium)可能和lxml或BeautifulSoup一样无助。但是,可能值得您尝试。

您目前使用的“删除”方法是什么表格?许多方法基本上我加载所有表格,然后在特定条件下测试单元格的内容。我这样做是因为我发现,与整个文档相比,在不清理html的情况下处理表格的可能性更大。另请参见您当前使用的“删除”方法表格?许多方法基本上我加载所有表格,然后在特定条件下测试单元格的内容。我这样做是因为我发现,与整个文档相比,在不清理html的情况下处理表格的可能性更大。另请参见@Alex Thank,因此我必须继续为t开发逻辑他在边缘cases@Alex谢谢,所以我必须继续为边缘案例开发逻辑