如何在使用bs4和请求处理后正确打印出unicode文本?

The*_*One 3 python unicode text beautifulsoup python-requests

我正在尝试创建一个包含Torah整个文本的txt单个文件.我在谷歌上找到的最好的来源是:http://www.mechon-mamre.org/i/t/t0101.htm.

这给了我章节,我必须连接并写出我的文件.

在运行以下脚本时使用urxvt(具有unicode支持的终端),我得到了胡言乱语:

import requests
from bs4 import BeautifulSoup

url = 'http://www.mechon-mamre.org/i/t/t0101.htm'
response = requests.get(url)
soup = BeautifulSoup(response.text)
paragraphs = soup.find_all('p')

print paragraphs[1]
Run Code Online (Sandbox Code Playgroud)

输出:

<p><b>à</b> <big>áÌÀ</big>øÅàùÑÄéú, áÌÈøÈà àÁìÉäÄéí, àÅú äÇùÌÑÈîÇéÄí, åÀàÅú äÈàÈøÆõ. 
<a name="2"> </a>
<b>á</b> åÀäÈàÈøÆõ, äÈéÀúÈä úÉäåÌ åÈáÉäåÌ, åÀçÉùÑÆêÀ, òÇì-ôÌÀðÅé úÀäåÉí; åÀøåÌçÇ àÁìÉäÄéí, îÀøÇçÆôÆú òÇì-ôÌÀðÅé äÇîÌÈéÄí. 
.....
Run Code Online (Sandbox Code Playgroud)

我试图强制输出默认使用unicode但我得到完全相同的输出:

print unicode(paragraphs[1])
Run Code Online (Sandbox Code Playgroud)

BeautfulSoup和Python-Requests都声称处理unicode,所以问题可能在于我的代码.如果我将希伯来文本从浏览器手工粘贴到urxvt,我会得到实际的希伯来语.因此终端不是问题.

Mar*_*ers 5

服务器不报告内容的编码,并且requests(或者更确切地说chardet)错误地猜测内容编码.

改为使用原始字节:

>>> soup = BeautifulSoup(response.content)
>>> paragraphs = soup.find_all('p')
>>> print paragraphs[1]
<p><b>?</b> <big>???</big>????????, ?????? ????????, ??? ???????????, ????? ???????. 
<a name="2"> </a>
<b>?</b> ?????????, ??????? ????? ???????, ?????????, ???-?????? ??????; ??????? ????????, ????????? ???-?????? ????????. 
<a name="3"> </a>
<b>?</b> ????????? ????????, ????? ????; ???????-????. 
<a name="4"> </a>
<b>?</b> ???????? ???????? ???-??????, ????-????; ??????????? ????????, ????? ?????? ?????? ?????????. 
<a name="5"> </a>
<b>?</b> ?????????? ???????? ?????? ????, ??????????? ????? ???????; ???????-????? ???????-?????, ???? ?????.  {?}<br/>
<a name="6"> </a>
<b>?</b> ????????? ????????, ????? ??????? ???????? ????????, ?????? ?????????, ????? ????? ???????. 
<a name="7"> </a>
<b>?</b> ????????? ????????, ???-?????????, ??????????? ????? ???????? ?????? ???????? ?????????, ?????? ???????? ?????? ????? ?????????; ???????-???. 
<a name="8"> </a>
<b>?</b> ?????????? ???????? ?????????, ????????; ???????-????? ???????-?????, ???? ??????.  {?}<br/>
<a name="9"> </a>
<b>?</b> ????????? ????????, ???????? ???????? ???????? ??????????? ???-?????? ?????, ?????????, ????????????; ???????-???. 
<a name="10"> </a>
<b>?</b> ?????????? ???????? ???????????? ?????, ??????????? ???????? ????? ???????; ???????? ????????, ????-????. 
<a name="11"> </a>
<b>??</b> ????????? ????????, ????????? ??????? ??????? ?????? ????????? ?????, ??? ?????? ?????? ?????? ????????, ?????? ???????-??? ???-???????; ???????-???. 
<a name="12"> </a>
<b>??</b> ????????? ??????? ??????? ?????? ????????? ?????, ??????????, ????? ??????-?????? ?????? ???????-???, ??????????; ???????? ????????, ????-????. 
<a name="13"> </a>
<b>??</b> ???????-????? ???????-?????, ???? ??????????.  {?}<br/>
<a name="14"> </a>
<b>??</b> ????????? ????????, ????? ??????? ?????????? ???????????, ???????????, ????? ??????? ?????? ??????????; ??????? ??????? ?????????????, ?????????? ?????????. 
<a name="15"> </a>
<b>??</b> ??????? ?????????? ?????????? ???????????, ???????? ???-???????; ???????-???. 
<a name="16"> </a>
<b>??</b> ????????? ????????, ???-?????? ?????????? ???????????:  ???-????????? ????????, ???????????? ???????, ?????-????????? ???????? ???????????? ??????????, ????? ????????????. 
<a name="17"> </a>
<b>??</b> ????????? ????? ????????, ?????????? ???????????, ????????, ???-???????. 
<a name="18"> </a>
<b>??</b> ??????????, ???????? ????????????, ?????????????, ????? ?????? ?????? ?????????; ???????? ????????, ????-????. 
<a name="19"> </a>
<b>??</b> ???????-????? ???????-?????, ???? ????????.  {?}<br/>
<a name="20"> </a>
<b>?</b> ????????? ????????--?????????? ????????, ?????? ?????? ??????; ?????? ???????? ???-???????, ???-?????? ??????? ???????????. 
<a name="21"> </a>
<b>??</b> ?????????? ????????, ???-???????????? ???????????; ????? ????-?????? ???????? ?????????? ?????? ???????? ???????? ??????????, ????? ????-???? ?????? ??????????, ???????? ????????, ????-????. 
<a name="22"> </a>
<b>??</b> ?????????? ????? ????????, ??????:  ?????? ???????, ????????? ???-???????? ???????????, ????????, ????? ????????. 
<a name="23"> </a>
<b>??</b> ???????-????? ???????-?????, ???? ?????????.  {?}<br/>
<a name="24"> </a>
<b>??</b> ????????? ????????, ??????? ??????? ?????? ?????? ?????????, ???????? ???????? ?????????-?????, ?????????; ???????-???. 
<a name="25"> </a>
<b>??</b> ????????? ???????? ???-?????? ??????? ?????????, ?????-?????????? ?????????, ????? ????-?????? ?????????, ??????????; ???????? ????????, ????-????. 
<a name="26"> </a>
<b>??</b> ????????? ????????, ???????? ????? ???????????? ?????????????; ?????????? ??????? ?????? ???????? ???????????, ???????????? ???????-???????, ???????-????????, ???????? ???-???????. 
<a name="27"> </a>
<b>??</b> ?????????? ???????? ???-??????? ??????????, ???????? ???????? ?????? ?????:  ????? ?????????, ?????? ?????. 
<a name="28"> </a>
<b>??</b> ?????????? ?????, ????????, ????????? ????? ???????? ?????? ??????? ????????? ???-???????, ???????????; ??????? ???????? ??????, ???????? ???????????, ???????-??????, ?????????? ???-???????. 
<a name="29"> </a>
<b>??</b> ????????? ????????, ?????? ???????? ????? ???-????-?????? ?????? ????? ?????? ???-?????? ???-???????, ?????-????-????? ??????-???? ?????-???, ?????? ?????:  ????? ???????, ?????????. 
<a name="30"> </a>
<b>?</b> ???????-?????? ??????? ???????-???? ??????????? ??????? ??????? ???-???????, ??????-???? ?????? ??????, ???-????-????? ??????, ?????????; ???????-???. 
<a name="31"> </a>
<b>??</b> ???????? ???????? ???-????-?????? ??????, ????????-???? ?????; ???????-????? ???????-?????, ???? ???????????.  {?}</p>
Run Code Online (Sandbox Code Playgroud)