python爬取网页的时候,某些字符丢失

新手上路,请多包涵

在爬取
http://www.jyeoo.com/chinese/...
这个网页的内容的时候,我使用beautifulSoup解析网页内容

head = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36'}
    r = urllib2.Request('http://www.jyeoo.com/chinese/ques/detail/798530b2-05b0-4c11-9434-bb3f50c4c6f4',headers=head)
    html = urllib2.urlopen(r)
    soup = BeautifulSoup(html,'html5lib')
    print soup.prettify()

这样打印出来的网页内容与原网页相比,某些字符丢失了!!这是原网页的html,注意其中的文字图片描述

这是我爬取的html,在同一个地方,我的截图如下:
图片描述

可以发现,中文字符部分丢失了一些字,但是在页面的其他部分,就没有丢失,比如
图片描述

不知道是什么原因,有知道的大神还请帮忙解答一下!!!!多谢

阅读 4.5k
1 个回答

不要用bs4解析

用re正则来取得内容


还请大神指教,请问您之前遇到过类似的情况吗,这是什么原因造成的呢

@天凉好个秋

网页用js来防复制,为了避免禁用js,内容里的某些字是由js来补全的。
所以,要有运行js的工具


试了几次,好像丢失内容有点随机性的~

多读取几次就正常了~

python3

import re, requests as req

url = r'http://www.jyeoo.com/chinese/ques/detail/798530b2-05b0-4c11-9434-bb3f50c4c6f4'
rsp = req.get(url)
html = rsp.text
fldsptn = re.compile(r'<fieldset.*?</fieldset>',re.S)
flds = fldsptn.findall(html)
print(flds[0])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题