Atom выдает ошибку при запросе данных с сайта - PullRequest
0 голосов
/ 30 марта 2019

Я запрашиваю html-данные из URL, используя модуль запроса в python.
Вот мой код

import requests

source = requests.get('http://coreyms.com')

print(source.text)

Когда я запускаю это в atom, это выдает мне ошибку;

File "/Users/isaacrichardson/Desktop/Python/Web Scraping/wiki.py", line 7, in <module>
    print(source.text)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 34807: ordinal not in range(128)

Но когда я запускаю его в рабочих пространствах Treehouse, он работает нормально и показывает мне html-данные.
Что не так с atom или моим кодом?

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

requests угадывает кодировку при доступе к атрибуту .text объекта ответа.Если вы заранее знаете кодировку ответа, вам следует явно установить его перед доступом к атрибуту .text:

import requests

source = requests.get('http://coreyms.com')
source.encoding = 'utf-8'  # or whatever the encoding is
print(source.text)

В качестве альтернативы, вы также можете работать с .content, чтобы получить доступ к двоичному содержанию ответа и декодировать его.Вы сами.

Вы можете проверить, действительно ли кодировки по-разному угадываются в ваших IDE, просто напечатав source.encoding.

0 голосов
/ 30 марта 2019

Библиотека запросов не установлена ​​правильно для Atom или не используется для него.Установка его правильно решит проблему.

Если это не сработает, я бы попробовал использовать красивый суповой модуль:

from bs4 import BeautifulSoup
doc = BeautifulSoup(source.text, "html.parser")
print(doc.text)
...