Код обращается к доске объявлений и индексирует/отчитывается по самым популярным темам. Используя WING IDE, он работает нормально и не сообщает об ошибках. Однако при запуске через командную строку он выдает ошибку, говоря, что не может правильно закодировать символ. Это первый раз, когда я вижу это и не нашел хорошего ресурса, чтобы это исправить.
Поскольку он отлично работает в WING, я не уверен, что еще добавить в код, чтобы предотвратить возникновение этой проблемы в командной строке.
import requests
from bs4 import BeautifulSoup
url = raw_input("Enter the board URL: ")
print "\n"
#send the HTTP request
response = requests.get(url)
if response.status_code == 200:
#pull the content
html_content = response.content
#send the page to BeautifulSoup
html_doc = BeautifulSoup(html_content, "html.parser")
#extract topic data
topic_spider = html_doc.find_all("span",{"class":"subject"})
data = []
for topic in topic_spider:
if topic.text!='':
data.append(topic.text)
topiclist = list(dict.fromkeys(data))
topiclist.sort(reverse=False)
for item in topiclist:
print ('[*] ' + item)
WING работает нормально, без ошибок. Через CMD после нескольких успешных результатов возникает следующий результат:
[*] Parenting (successful result)
Traceback (most recent call last):
File "D:\xxxx\topicindexer.py", line 29, in <module>
print ('[*] ' + item)
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u2019' in position 31: character maps to <undefined>
Не используйте умные кавычки. CMD по умолчанию является кодовой страницей OEM. Программа для вашей среды.






Убедитесь, что среда Python в CMD и Wing одинакова. Установите переменные среды в Wing IDE в CMD.
Похоже, ваш код написан на Python 3, но по умолчанию установлен Python 2.
При запуске кода в CMD просто добавьте python3 myfile.py, а не просто python myfile.py
Я отмечаю две вещи.
Во-первых, вы используете операторы печати, подобные этому
print ('[*] ' + item)
что указывает на то, что вы используете python 3.x
Во-вторых, ваш вывод cmd использует python 2.7.
Похоже, это твоя проблема. Попробуйте python3 filename.py в командной строке вместо python filename.py, так как это то, что по умолчанию используется, когда вы оба установили.
Посмотрите, решит ли это это раньше всего.
Я взял эту идею из другого поста, так что мне плохо за то, что я использовал здесь неправильный синтаксис. Я установил обновленный Python 3.x, но ему по-прежнему не нравится команда python3: *** 'python3' не распознается как внутренняя или внешняя команда, исполняемая программа или пакетный файл. *** Невозможно удалить python3 сейчас, так что теперь он сломался, потому что он ожидает 3,0 повсюду. хммм
Наличие нескольких установленных версий Python может привести к беспорядку, лично я бы посоветовал просто удалить 2.7, если он вам не нужен. Затем полностью переустановите последнюю версию 3.x, обязательно установите флажок, который добавляет вещи в переменную PATH в установщике и все такое. Таким образом, python3 должен просто работать под командой python вместо python3.
Я буду следить за этим как можно скорее. Я прохожу курс, который использует 2.7, поэтому синтаксис устарел. Я понимаю, что это позади; Я просто пытался придерживаться материала курса. Попробую переписать, а там посмотрим.
Звучит хорошо, я должен идти, так что удачи вам, между ними не так уж много критических различий с точки зрения синтаксиса для большинства вещей, просто не забудьте заключить в скобки свои отпечатки, и вы будете в порядке на 99%. Документы BeautifulSoup4 отмечают, что функции модуля в основном одинаковы для 2.7 и 3.x, поэтому вы должны быть в порядке, используя это.
Удалил неиспользуемую версию... Вот что странно. Если я перехожу в свою учетную запись администратора на этой машине, все работает нормально... Но возвращаясь к моей обычной учетной записи пользователя, она ломается так же (даже при запуске CMD в качестве администратора). Это новое для меня, но я собираюсь списать это на что-то странное в окружающей среде.
Похоже, что-то было установлено только под пользователем-администратором, а не под вашим, я думаю, что pip по умолчанию устанавливает только в определенных местах, например (например, для каждого пользователя, если он не был запущен от имени администратора) в зависимости от того, как вы его запускаете. Раздражающая часть Python. Я думаю, что вы, вероятно, правы в части среды, хотя я недостаточно осведомлен, чтобы рассказать вам, как это исправить, не удаляя все это полностью из каждой учетной записи пользователя и переустанавливая :(
Я понимаю, что он говорит. Чего я не понимаю, так это правильного способа исправить это.