国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python BeautifulSoup中文亂碼問題的2種解決方法

2019-11-25 18:26:42
字體:
來源:轉載
供稿:網友

解決方法一:

使用python的BeautifulSoup來抓取網頁然后輸出網頁標題,但是輸出的總是亂碼,找了好久找到解決辦法,下面分享給大家
首先是代碼

復制代碼 代碼如下:

from bs4 import BeautifulSoup
import urllib2

url = '//m.survivalescaperooms.com/'
page = urllib2.urlopen(url)

soup = BeautifulSoup(page,from_encoding="utf8")
print soup.original_encoding
print (soup.title).encode('gb18030')

file = open("title.txt","w")
file.write(str(soup.title))
file.close()

 

for link in soup.find_all('a'):
    print link['href']

在剛開始測試的時候發現,雖然輸出是亂碼的,但是寫在文件里面卻是正常的.然后在網上找了找解決辦法才發現
print一個對象的邏輯:內部是調用對象的__str__得到對應的字符串的,此處對應的是soup的__str__ 而針對于soup本身,其實已經是Unicode編碼,所以可以通過指定__str__輸出時的編碼為GBK,以使得此處正確顯示非亂碼的中文
而對于cmd:(中文的系統中)編碼為GBK,所以只要重新編碼為gb18030就可以正常輸出了
就是下面這行代碼
復制代碼 代碼如下:

print (soup.title).encode('gb18030')

解決方法二:

BeautifulSoup在解析utf-8編碼的網頁時,如果不指定fromEncoding或者將fromEncoding指定為utf-8會出現中文亂碼的現象。

解決此問題的方法是將Beautifulsoup構造函數中的fromEncoding參數的值指定為:gb18030

復制代碼 代碼如下:

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen('//m.survivalescaperooms.com/');
soup = BeautifulSoup(page,fromEncoding="gb18030")
print soup.originalEncoding
print soup.prettify()

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长海县| 西青区| 南昌市| 张家川| 滨州市| 华池县| 军事| 交口县| 专栏| 田林县| 蚌埠市| 宝清县| 孟连| 抚松县| 垫江县| 衢州市| 津市市| 布尔津县| 赤壁市| 济南市| 通海县| 丘北县| 叶城县| 呼玛县| 兴城市| 巨鹿县| 班戈县| 雅安市| 崇阳县| 灵丘县| 丰原市| 上思县| 什邡市| 深州市| 通江县| 道孚县| 永年县| 黄龙县| 定边县| 景洪市| 全椒县|