2017-10-21 313 views
0

我的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代码提取中文字符,我爬过的字符可以正常显示。他们没有一个表现得像这样。

我改变了几种编码方法,但没有奏效。我怎么解决这个问题?谢谢!

回答

0

你没有得到poembody内容的原因是因为它都是在页面加载后通过AJAX调用生成的。刮页面不会检索此内容。

在给定正确输入的情况下,您可以手动触发AJAX调用并收集其内容。具体来说,致电getPoems(),其中有三个参数,type,subjectuuid。这些值依次从通用的window.location.search解析。有关详细信息,请参阅poem-0.0.76.js文件,该文件链接在您提供的URL的<head>标记中。有一点回溯,应该可以把所有东西拼凑在一起,以获得你需要的诗歌。

相关问题