我的python版本是3.6.3。我的操作系统是WIN7。我现在正在从下面的网站上提取中文字符:https://crl.ptopenlab.com:8800/poem/show?3&%25E5%258F%2591%25E7%2594%259F&A718FCB2-CE47-4649-BB46-0E09B169FD59
我想提取的元素是嵌入在以下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代码提取中文字符,我抓取的字符可以正常显示。他们中没有一个人的行为像这样。
我更改了几种编码方法,但都不起作用。我该如何解决这个问题?谢谢!
发布于 2017-10-22 16:44:18
无法获得poembody内容的原因是,这些内容都是在页面加载后通过AJAX调用生成的。抓取页面将不会检索此内容。
如果输入正确,您可以手动触发AJAX调用并收集其内容。具体地说,就是调用getPoems(),它接受三个参数:type、subject和uuid。这些值依次从通用window.location.search中解析出来。有关详细信息,请参阅poem-0.0.76.js文件,该文件链接在您提供的URL的<head>标记中。通过一些回溯,应该可以将所有内容拼凑在一起,以获得您需要的诗歌。
https://stackoverflow.com/questions/46860121
复制相似问题