2015-11-24 24 views
0

我有一個包含1,000多個網址的文本文件,每個網址鏈接到文本的日記條目。其中一些條目包含中文或日文字符。來自使用BeautifulSoup的HTML的外來字符(即中文)?

我想使用BeautifulSoup保存每個條目。但是,我無法弄清楚在這種情況下編碼和解碼是如何工作的。我瀏覽了Stack Overflow以獲得幫助,我只能找到其中字符串本身已知並設置爲變量的實例。

然而,鑑於我從一個網址列表刮,我不知道我會找到什麼字符串,直到我收集它們。

這是我到目前爲止有:

with open(data_src) as f: 
    resp = requests.get(f.readlines()[419]) 
    raw_text = resp.text 
    soup = BeautifulSoup(raw_text, 'html.parser') 
    for s in soup.findAll('script'): 
     s.replaceWith('') 
    entry = soup.select('div#body_show_ori')[0] 
    print(entry.text.encode('utf-8')) 

這是打印字符串:

B'\ n \ XE6 \ X88 \ X91 \ XE7 \ XBB \ X88 \ XE4 \ XBA \ x8e \ xe5 \ X88 \ XB0 \ XE4 \ XBA \ 86 \ XE4 \ XB8 \ XAD \ xe5 \ x9b \ XBD \ xe5 \ x8e \ xa6 \ xe9 \ X97 \ xa8 \ XE3 \ X80 \ X82 \ XE6 \ X88 \ X91 \ xe8 \ XA7 \ X89 \ xe5 \ XBE \ X97 \ xe8 \ XBF \ X99 \ xe9 \的x87 \ x8c \ xe5 \ XBE \ X88 \ XE7 \ X83 \ XAD \ xe5 \ XBE \ X88 \ XE6 \ XBD \ XAE \ XE6 \ xb9 \ XBF \ XE3 \ X80 \ X82 \ XE7 \ x8e \ XB0 \ xe5 \ x9c \ xa8 \ XE6 \ X88 \ X91 \ XE6 \ XB2 \ XA1 \ XE6 \ x9c \ X89 \ XE6 \ x9c \ x8b \ xe5 \ X8F \ x8b \ xe8 \ X80 \ x8c \ XE4 \ XB8 \ X94 \ xe8 \ XBF \ X99 \ XE4 \ XB8 \的Xaa \ xe5 \ x9c \ XB0 \ XE6 \ X96 \ xb9 \ XE6 \ X88 \ X91 \ XE4 \ XB8 \ x8d \ XE7 \ 86 \ x9f \ XE6 \ X82 \ X89 \ XE3 \ X80 \ X82 \ XE4 \ XB8 \ x8d \ XE6 \ X95 \ XA2 \ xe5 \的x87 \ XBA \ xe5 \ x8e \ XBB \ xe5 \ XA4 \ X96 \ xe9 \ x9d \ XA2 \ XE3 \ X80 \ X82 \ XE3 \ X80 \ X82 \ XE3 \ X80 \ X82 \ xe5 \ xa5 \ XBD \ XE6 \ X97 \ XA0 \ xe8 \ X81 \ x8a \ XE3 \ X80 \ x82 \ xe3 \ x80 \ x82 \ n'

這就是我卡住的地方;我想弄清楚如何從這裏解碼字符串。

+0

嘗試刪除'.encode('utf-8')'。 –

+0

@KevinGuan我得到''ascii'編解碼器無法編碼位置1-54字符:序號不在範圍(128)',因此,我爲什麼要編碼(並不可避免地解碼,但我不知道如何去做吧) –

+0

嗯...然後解碼它?試試'.encode('utf-8')。decode('utf-8')'? –

回答

0

嘗試解碼之前傳遞數據到beautifulsoup。

IIRC coreectly,如果你傳遞一個unicode對象,它不會再解碼它。