首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows OS上python3.x中的Beutifulsoup4无法获取中文字符

windows OS上python3.x中的Beutifulsoup4无法获取中文字符
EN

Stack Overflow用户
提问于 2017-10-21 12:44:53
回答 1查看 75关注 0票数 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

我想提取的元素是嵌入在以下HTML代码中的字符:

代码语言:javascript
复制
<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代码是:

代码语言:javascript
复制
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)

这段代码并不是专门提取中文字符的。我只是想检查一下汉字是否能正确显示。不幸的是,结果并不是我所期望的:

代码语言:javascript
复制
['\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']

如果我提取列表中的第一项,它显示如下:

代码语言:javascript
复制
<div id="title"></div>

这就是问题所在,没有显示任何字符!

我试着在其他网站上用类似的python代码提取中文字符,我抓取的字符可以正常显示。他们中没有一个人的行为像这样。

我更改了几种编码方法,但都不起作用。我该如何解决这个问题?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-10-22 16:44:18

无法获得poembody内容的原因是,这些内容都是在页面加载后通过AJAX调用生成的。抓取页面将不会检索此内容。

如果输入正确,您可以手动触发AJAX调用并收集其内容。具体地说,就是调用getPoems(),它接受三个参数:typesubjectuuid。这些值依次从通用window.location.search中解析出来。有关详细信息,请参阅poem-0.0.76.js文件,该文件链接在您提供的URL的<head>标记中。通过一些回溯,应该可以将所有内容拼凑在一起,以获得您需要的诗歌。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46860121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档