python网络爬虫文档读取-纯文本读取

来源:互联网 发布:iroha mini知乎 编辑:程序博客网 时间:2024/06/06 10:40

    虽然把文件存储为在线的纯文本格式并不常见,但是一些简易网站,或者拥有大量“旧式学术”的网站经常会这样做。大多数浏览器可以很好的显示纯文本文件,采集它们也不会遇到什么问题。

    对于大部分简单的纯文本文件,如http://www.pythonscraping.com/pages/warandpeace/chapter1.txt这个练习文件,你可以使用下面的方法读取:

from urllib.request import urlopentextPage=urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1.txt")print(textPage.read())
   大多数时候用上面的方法读取纯文本都没有问题。但是,互联网上的文本文件会比较复杂。下面将会分析一些英文和非英文编码的基础知识,包括ASCII,Unicode和ISO编码,以及对应的处理方法。

    UTF-8的每个字符开头有一个标记表示“这个字符只用一个字节”或“那个字符需要用两个字节”,一个字符最多可以是四个字节。由于这四个字节中还包含了一部分设置信息,用来决定多少字节用做字符编码,所以全部的32位并不会都用,其实最多使用21位。

    ASCII是20世纪60年代开始使用的文字编码标准,每个字符7位,一共128个字符。这对于拉丁字母(包括大小写)、标点符号和英文键盘上的所有符号,都是够用的。

    ISO标准通过为每种语言创建一种编码来解决问题。和Unicode不同,它使用了和ASCII码相同的编码,但是在每个字符的开头使用0作为填充位,这样可以让语言在需要的时候创建特殊字符。下面的示例中使用了UTF-8来读取指定的文档。

from urllib.request import urlopentextPage=urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1-ru.txt")print(str(textPage.read(),'utf-8')或者使用BeautifulSoup和Python3.x对文档进行UTF-8编码html=urlopen("http://www.pythonscraping.com/pages/warandpeace/chapter1-ru.txt")bsObj=BeautifulSoap(html)content=bsObj.find("div",{"id":"mw-content-text"}).get_text()content=bytes(content,"UTF-8")content=content.decode("UTF-8")
     一般网站的meta标签中会指定编码方式,如果你需要做很多网络数据采集工作,尤其是面对国际网站时,建议你先看看meta标签的内容,用网站推荐的编码方式进行页面内容的读取。

原创粉丝点击