刮汉字蟒蛇

时间:2016-12-23 17:58:18

标签: python-2.7 encoding web-scraping beautifulsoup decoding

我了解了如何从https://automatetheboringstuff.com废弃网站。我想废弃内容为中文的http://www.piaotian.net/html/3/3028/1473227.html并将其内容写入.txt文件。但是,.txt文件包含随机符号,我认为这是一个编码/解码问题。

我已经读过这个帖子“how to decode and encode web page with python?”,并认为我网站的编码方法是“gb2312”和“windows-1252”。我试过用这两种编码方法解码但是失败了。

有人可以向我解释我的代码问题吗?我对编程很陌生,所以请让我知道我的误解!

此外,当我从代码中删除“html.parser”时,.txt文件变为空,而不是至少包含符号。为什么会这样?

import bs4, requests, sys

reload(sys)
sys.setdefaultencoding("utf-8")

novel = requests.get("http://www.piaotian.net/html/3/3028/1473227.html")
novel.raise_for_status()

novelSoup = bs4.BeautifulSoup(novel.text, "html.parser")

content = novelSoup.select("br")

novelFile = open("novel.txt", "w")
for i in range(len(content)):
    novelFile.write(str(content[i].getText()))

1 个答案:

答案 0 :(得分:1)

novel = requests.get("http://www.piaotian.net/html/3/3028/1473227.html")
novel.raise_for_status()
novel.encoding = "GBK"
novelSoup = bs4.BeautifulSoup(novel.text, "html.parser")

出:

<br>
    一元宗,坐落在青峰山上,绵延极长,现在是盛夏时节,天空之中,太阳慢慢落了下去,夕阳将影子拉的很长。<br/>
<br/>
    一片不是很大的小湖泊边上,一个约莫着十七八岁的青衣少年坐在湖边,抓起湖边的一块石头扔出,顿时在湖边打出几朵浪花。<br/>
<br/>
    叶希文有些茫然,他没想到,他居然穿越了,原本叶希文只是二十一世纪的地球上一个普通的大学生罢了,一个月了,他才后知后觉的反应过来,这不是有人和他进行恶作剧,而是,他真的穿越了。<br/>
  

请求将自动解码服务器中的内容。最   unicode charsets无缝解码。

     

当您提出请求时,请求会对此进行有根据的猜测   基于HTTP头的响应编码。文本编码   当您访问r.text时,将使用Requests猜测。你可以找到   请求正在使用什么编码,并使用r.encoding更改它   属性:

>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
     

如果更改编码,请求将使用新值   r.encoding每当你调用r.text。