0

我尝试使用 BeautifulSoup4 来解析从http://exporter.nih.gov/ExPORTER_Catalog.aspx?index=0检索到的 html如果我打印出结果汤,它会像这样结束:

kZXI9IjAi"/></form></body></html>

搜索9IjaI原始 html 中的最后一个字符,我发现它位于一个巨大的视图状态的中间。BeautifulSoup 似乎对此有疑问。任何提示我可能做错了什么或如何解析这样的页面?

4

1 回答 1

1

BeautifulSoup 使用可插入的 HTML 解析器来构建“汤”;您需要尝试不同的解析器,因为每个解析器都会以不同的方式处理损坏的页面。

但是,我使用任何解析器解析该页面都没有问题:

>>> from beautifulsoup4 import BeautifulSoup
>>> import requests
>>> r = requests.get('http://exporter.nih.gov/ExPORTER_Catalog.aspx?index=0')
>>> for parser in ('html.parser', 'lxml', 'html5lib'):
...     print repr(str(BeautifulSoup(r.text, parser))[-60:])
... 
';\r\npageTracker._trackPageview();\r\n</script>\n</body>\n</html>\n'
'();\r\npageTracker._trackPageview();\r\n</script>\n</body></html>'
'();\npageTracker._trackPageview();\n</script>\n\n\n</body></html>'

确保您安装了最新的BeautifulSoup4软件包,我已经看到在 4.2 中解决了 4.1 系列中的一致问题。

于 2013-08-09T15:54:04.117 回答