lxml html.parse возвращает Ошибка чтения файла не удалось загрузить внешнюю сущность - PullRequest
0 голосов
/ 06 мая 2018

Новичок спорит с lxml и в настоящее время просматривает книгу О'Рейли. После импорта 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"

1 Ответ

0 голосов
/ 06 мая 2018

Проблема в том, что с момента публикации книги веб-сайт emoji-cheat-sheet.com изменился на https://www.webpagefx.com/tools/emoji-cheat-sheet/, поэтому он перенаправляет вас туда, и простой html.parse не может обработать перенаправление (и может бороться с шифрование, поскольку теперь оно использует http s (безопасное зашифрованное) соединение, как, впрочем, и большинство профессиональных веб-сайтов в наши дни.

Мне удалось разобрать его с помощью библиотеки запросов:

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, я посмотрю, работает ли он, и сообщу.

...