【问题标题】:Not able to parse big HTML using PyQuery无法使用 PyQuery 解析大 HTML
【发布时间】:2013-05-07 17:31:05
【问题描述】:

由于我不确定我面临的问题是错误还是我缺乏知识,因此我想寻求您的帮助。

情况是,当尝试使用 PyQuery 解析这个 url (http://ies.ieee-ies.org/resources/media/publications/TIEpub/1988_2013.htm) 时,显然它只加载标题,而忽略正文:

>>> import urllib2
>>> from pyquery import PyQuery as pq

>>> response = urllib2.urlopen('http://ies.ieee-ies.org/resources/media/publications/TIEpub/1988_2013.htm').read() # 9MB page
>>> len(response)
9835026
>>> dom = pq(response)
>>> dom.html()
u'<head><title>IEEE Transactions on Industrial Electronics</title></head><body><h1 align="center">&#13;\n   <img border="0" src="ieeelogo.gif"/><font color="#FF6600">\xa0IEEE Tr
ansactions on Industrial Electronics\xa0&#13;\n   <img border="0" src="ieslogo.gif"/></font>&#13;\n   </h1><h2 align="center">&#13;\n   Volume 35, \xa0Number 1, Feb 1988 \xa0\xa
0\xa0\xa0\xa0\xa0\xa0\xa0\xa0&#13;\n   <a href="http://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=41"><font size="4">Access to the journal on IEEE XPLORE</font></a><font s
ize="4"> </font>\xa0\xa0\xa0&#13;\n   <a href="http://tie.ieee-ies.org/"><font size="3">IE Transactions Home Page</font></a><font size="4"> </font> &#13;\n   </h2><hr/><br/><br/
></body>'

我不知道 PyQuery 上的 HTML 解析有大小限制吗?

PS:我有一个使用不同页面导致相同内容的工作,但我想知道这是什么原因。

【问题讨论】:

    标签: python python-2.7 pyquery


    【解决方案1】:

    我很确定问题不在于大小,而在于该页面的 HTML 非常损坏。例如,它有超过 2000 个&lt;html&gt; 标签(正确的数字是一个)。我很震惊浏览器可以理解它,但是 Mozilla 开发人员有一个在这类事情上拥有丰富的经验,我想 PyQuery 开发人员虽然无疑是勤奋的,但可能会少得多。如果您可以从其他页面获取内容,那么一定要这样做,特别是如果该页面的损坏程度较低。

    【讨论】:

    • PyQuery 使用lxml,它做得不错,但与所有损坏的 HTML 一样,您的里程会有所不同,垃圾进,垃圾出。 html5lib 会以不同的方式处理它,通常更接近于浏览器的处理方式。
    • 明白。谢谢大家的解释。
    • OMFG 它实际上确实有几千个&lt;html&gt; 标签。对于这个星球上最伟大的工程协会之一的技术能力而言,这就是如此。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2016-02-04
    • 2020-02-29
    • 2012-07-12
    • 1970-01-01
    • 2014-03-15
    • 2013-02-17
    相关资源
    最近更新 更多