2015-11-26 4 views
0

Недавно я попытался использовать urllib2 и BeautifulSoup для извлечения исходной коеде какой-либо веб-страницы, однако, не удалось с выходом неправильного кода. Сценарий выглядит следующим образом (работает в Python IDLE)Веб-скребок с модулями Python urllib2 и BeautifulSoup

import urllib2 
from bs4 import BeautifulSoup 
web = "http://www.qq.com" 
page = urllib2.urlopen(web) 
soup = BeautifulSoup(page, "html.parser") 
print soup.prettify() 

Я обнаружил, что кодировка «http://www.qq.com» является gb2312, поэтому добавили кое-что в приведенном выше сценарии, как это:

import urllib2 
from bs4 import BeautifulSoup 
web = "http://www.qq.com" 
page = urllib2.urlopen(web) 
soup = BeautifulSoup(page, "html.parser", from_encoding="gb2312") 
print soup.prettify() 

Но результат разочаровывает. Есть ли доступное решение?

скриншот сообщения об ошибке:

Error Message

Последний выходные я добавил модуль SYS в приведенном выше коде, но ничего не печатает, без предупреждения на этот раз.

#coding=utf-8 

import urllib2 
from bs4 import BeautifulSoup 
import sys 
reload(sys) 
sys.setdefaultencoding('gbk') 

web = "http://www.qq.com" 
page = urllib2.urlopen(web) 
soup = BeautifulSoup(page, "html.parser") 
print soup.prettify() 

ответ

0

Вы можете отправить сообщение об ошибке? Или проблема в том, что он просто не отображает китайских символов на экране?

Попробуйте переключиться на кодировку gb18030. Несмотря на то, что на странице указано, что ее кодировка - gb2313, должен быть символ, который испортил декодирование. Переключение кодировок превратило мой вывод на терминал с мусора на китайские иероглифы (Source)

import urllib2 
from bs4 import BeautifulSoup 
web = "http://www.qq.com" 
page = urllib2.urlopen(web) 
soup = BeautifulSoup(page, "html.parser", from_encoding="gb18030") 
print soup.prettify() 
+0

Спасибо. Я просто изменил «gb2312» на «gb18030» и снова запустил сценарий, но получил тот же результат. Добавлен скриншот сообщения об ошибке. –

+0

Хм. Это сработало для меня. Сообщение об ошибке, которое вы отправили, является ошибкой BeautifulSoup. Какая версия BS у вас есть? 'python -c" import bs4; print bs4 .__ version __ "' – Spencer

+0

Версия 4.4.1. Я пробовал некоторые другие способы публикации в Интернете, но до сих пор не понял. Новый способ ничего не печатает. –

Смежные вопросы