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

首頁 > 編程 > Python > 正文

Python信息抽取之亂碼解決辦法

2020-01-04 16:54:59
字體:
來源:轉載
供稿:網友

Python信息抽取之亂碼解決辦法

就事論事,直說自己遇到的情況,和我不一樣的路過吧,一樣的就看看吧

  信息抓取,用python,beautifulSoup,lxml,re,urllib2,urllib2去獲取想要抽取的頁面內容,然后使用lxml或者beautifulSoup進行解析,插入mysql 具體的內容,好了貌似很簡單很easy的樣子,可是里面的惡心之處就來了,第一,國內開發網站的人在指定網站編碼或者是保存網站源碼的時候并沒有考慮什么編碼,反正一句話,一個網站即使你用工具查看或者查看源碼頭信息查看到他們的源碼是utf-8,或者GBK之類的,也別信,哎,什么東西信了就遭殃了,即<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  以下給出一些流程:(具體各個庫不是我這里向說的哦)

 import urllib2   import chardet  html = urllib2.urlopen("某網站")  print chardet.detect(html) #這里會輸出一個字典{'a':0.99999,'encoding':'utf-8'}

  好,這整個html的編碼都知道,該插入以utf-8建立的mysql數據庫了吧,但是我就在插入的時候發生錯誤了,因為我使用lxml以后的字符串不是utf-8,而是Big5(繁體字編碼),還有各種未知編碼EUC-JP(日本語編碼),OK,我采取了unicode方法,先對這個字段進行解碼,在進行編碼

if chardet.detect(name)['encoding'] == 'GB2312':  name = unicode(name,'GB2312','ignore').encode('utf-8','ignore')elif chardet.detect(name)['encoding'] == 'Big5': name = unicode(name,'Big5','ignore').encode('utf-8','ignore')elif chardet.detect(name)['encoding'] == 'ascii': name = unicode(name,'ascii','ignore').encode('utf-8','ignore')elif chardet.detect(name)['encoding'] == 'GBK': name = unicode(name,'GBK','ignore').encode('utf-8','ignore')elif chardet.detect(name)['encoding'] == 'EUC-JP': name = unicode(name,'EUC-JP','ignore').encode('utf-8','ignore')else:  name = '未知'

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临邑县| 承德县| 綦江县| 茂名市| 磐安县| 房产| 曲周县| 凤台县| 镇江市| 台北市| 梧州市| 柳河县| 疏附县| 巨野县| 清苑县| 五家渠市| 义乌市| 万安县| 来宾市| 霍山县| 信阳市| 分宜县| 馆陶县| 隆林| 松桃| 泽普县| 临澧县| 辽阳县| 广东省| 响水县| 武清区| 铁岭市| 博兴县| 龙陵县| 百色市| 屯留县| 鹿邑县| 甘肃省| 武义县| 万源市| 大城县|