BeautifulSoup无法解析长视图状态

时间:2013-08-09 15:51:45

标签: python html-parsing beautifulsoup

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

>>> 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系列中的一致问题。