【问题标题】:Python 64 bit not storing as long of string as 32 bit pythonPython 64 位不存储与 32 位 python 一样长的字符串
【发布时间】:2015-04-21 09:34:14
【问题描述】:

我有两台电脑,都运行 64 位 Windows 7。一台机器运行 python 32 位,一台运行 python 64 位。两台机器都有 8GB 的​​ RAM。

我正在使用 BeautifulSoup 抓取网页,但我的 python64 机器上遇到了问题。我已经能够弄清楚我的len(str(BeautifulSoup(request.get(http://www.sampleurl.com).text))) 在 64 位中的输出仅返回 92520 个字符,但在我的 python32 位机器上的同一个静态站点上,它返回 135000 个字符。

在过去的某个时候,在我的 python64 位机器上,我有 python32 位,但卸载它以安装 python64 位,因为我在使用 pip install 安装 scipy 时遇到问题(结果证明这不是问题)。

无论如何,我不确定为什么我的 64 位 python 机器没有返回整个 html 字符串,我想知道是否有人可以帮助我了解发生了什么以及如何解决它。

【问题讨论】:

    标签: python python-2.7 beautifulsoup 32bit-64bit


    【解决方案1】:

    这不是 32 位 / 64 位的问题。您很可能是 解析器 问题;例如,一台机器使用lxml 而另一台机器使用html.parser

    不同的解析器对损坏的 HTML 的处理方式不同,lxml 仅在安装时是默认设置。

    参见示例:

    等等

    在两台机器上运行import lxml 进行验证。当您将一台机器上的 Python 安装替换为 64 位版本时,您可能没有包含兼容的 lxml 版本。

    【讨论】:

    • 我已经安装在 32 位 python 机器上,现在两台机器都将输出限制为 92520 字符串长度。
    • @exhoosier10:你有没有安装lxml?您可以在解析器之间显式切换;传入'lxml''html.parser' 作为第二个参数并比较输出。
    • 使用 'html.parser' 有效。谢谢。我在搜索过程中找不到任何有用的东西,您提供的所有链接都是有意义的。这只是网站部分编码不佳的 HTML 的根本原因吗?
    • @exhoosier10:几乎总是这样,是的。我在某些 Ubuntu 安装中看到了问题,其中 lxml 或者依赖项 libxml2 无法正常工作,但没有更多信息,我不能说你的 Windows 设置是否存在这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 2015-03-22
    • 2021-07-08
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多