使用BeautifulSoup的HTML中的外来字符(即中文)?

时间:2015-11-24 22:40:44

标签: python unicode web-scraping beautifulsoup

我有一个包含1,000多个网址的文本文件,每个网址都链接到一个日记文本条目。其中一些条目包含中文或日文字符。

我想使用BeautifulSoup保存每个条目。但是,我无法弄清楚编码和解码在这种情况下是如何工作的。我已经浏览了Stack Overflow以寻求帮助,我只能找到字符串本身已知并设置为变量的实例。

但是,鉴于我正在从URL列表中删除,我不知道在收集它们之前会找到哪些字符串。

这是我到目前为止所做的:

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 \ XE3 \ X80 \ X82 \ N'

这就是我被困住的地方;我正在试图弄清楚如何从这里解码字符串。

1 个答案:

答案 0 :(得分:0)

在将数据传递给beautifulsoup之前尝试解码

IIRC coreectly,如果你传递一个unicode对象,它将不会再次解码它。