我尝试使用BeautifulSoup4来解析从http://exporter.nih.gov/ExPORTER_Catalog.aspx?index=0检索到的html。如果我打印出结果汤,它就会这样结束:
kZXI9IjAi"/></form></body></html>
在原始html中搜索最后一个字符9IjaI
,我发现它位于一个巨大的视图状态中间。 BeautifulSoup似乎有这个问题。任何提示我可能做错了什么或如何解析这样的页面?
答案 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系列中的一致问题。