中文字符无法在Windows操作系统上使用python3.x中的Beutifulsoup4获得
问题描述:
我的python版本是3.6.3。而我的操作系统是WIN7。 我现在正在从以下网站提取中国人物: https://crl.ptopenlab.com:8800/poem/show?3&%25E5%258F%2591%25E7%2594%259F&A718FCB2-CE47-4649-BB46-0E09B169FD59中文字符无法在Windows操作系统上使用python3.x中的Beutifulsoup4获得
我想提取的元素嵌入HTML代码如下字符:
<div id="poemcontent" style="top: 82.4px;">
<div id="title">发生</div>
<div class="poembody">发情犹是梦</div>
<div class="poembody">生意未能行</div>
<div class="poembody">独坐青山下</div>
<div class="poembody">还看白日明</div>
</div>
我的Python代码:
import urllib.request
res=urllib.request.urlopen("https://crl.ptopenlab.com:8800/poem/show?3&%25E5%258F%2591%25E7%2594%259F&A718FCB2-CE47-4649-BB46-0E09B169FD59").read()
from bs4 import BeautifulSoup
soup = BeautifulSoup(res,from_encoding="RTF-8")
body=soup.body
print(body.div.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.next_sibling.contents)
此代码并不真正提取纯粹的汉字。我只想检查汉字是否可以正确显示。不幸的是,结果不是我所期待的:
['\n', <div id="title"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"></div>, '\n', <div class="poembody"><img height="100px" src="static/images/write.gif" width="100px"/></div>, '\n']
如果我在列表中提取的第一个项目,它显示如:
<div id="title"></div>
所以这就是问题所在,没有显示的字符!
我试图在其他网站上使用类似的python代码提取中文字符,我爬过的字符可以正常显示。他们没有一个表现得像这样。
我改变了几种编码方法,但没有奏效。我怎么解决这个问题?谢谢!
答
你没有得到poembody
内容的原因是因为它都是在页面加载后通过AJAX调用生成的。刮页面不会检索此内容。
在给定正确输入的情况下,您可以手动触发AJAX调用并收集其内容。具体来说,致电getPoems()
,其中有三个参数,type
,subject
和uuid
。这些值依次从通用的window.location.search
解析。有关详细信息,请参阅poem-0.0.76.js
文件,该文件链接在您提供的URL的<head>
标记中。有一点回溯,应该可以把所有东西拼凑在一起,以获得你需要的诗歌。