【问题标题】:lxml html.parse returns Error reading file failed to load external entitylxml html.parse 返回错误读取文件未能加载外部实体
【发布时间】:2018-05-06 14:09:44
【问题描述】:

新手与 lxml 争论不休,目前正在阅读 O'Reilly 的书。导入html表单lxml后,使用html.parse返回如下错误信息:

读取文件“http://www.emoji-cheat-sheet.com/”时出错:无法加载外部实体“http://www.emoji-cheat-sheet.com/”

下面是代码:

from lxml import html
page = html.parse('http://www.emoji-cheat-sheet.com/')

这也可以在书籍相关存储库中找到:

https://github.com/jackiekazil/data-wrangling/blob/master/code/chp11-scraping/lxml_emoji_xpath.py

“hmtl.parse”

【问题讨论】:

标签: python parsing lxml


【解决方案1】:

问题是,自从出版这本书以来,网站 emoji-cheat-sheet.com 已更改为 https://www.webpagefx.com/tools/emoji-cheat-sheet/,因此它会将您重定向到那里,而简单的 html.parse 无法处理重定向(并且可能会在加密方面遇到困难,因为它现在使用 https(安全加密)连接,现在大多数专业网站确实如此。

我能够使用 requests 库对其进行解析:

import requests
page = requests.get('https://www.webpagefx.com/tools/emoji-cheat-sheet')
content=page.content
print(content)

如果您尝试向该特定网站发出不安全的 http 请求,服务器仍会将您重定向到 https 页面。像这样的安全页面很难用原始库解析。

http://dictionary.com 不会自动将您重定向到 https 站点,并且相同的代码可以正常工作。 (我也试过你的表情符号网站,但没有用)..

如果您必须解析该特定站点,我建议使用 BeautifulSoup,我会看看它是否有效并报告回来。

【讨论】:

  • 谢谢,这实际上是我在查看要解析的 url 时的疏忽。使用不同且有效的 URL(没有重定向),错误就会消失。
猜你喜欢
  • 2015-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多