Python資訊抽取之亂碼解決

2022-05-08 11:33:08 字數 1348 閱讀 4641

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

資訊抓取,用python,beautifulsoup,lxml,re,urllib2,urllib2去獲取想要抽取的頁面內容,然後使用lxml或者beautifulsoup進行解析,插入mysql 具體的內容,好了貌似很簡單很easy的樣子,可是裡面的噁心之處就來了,第一,國內開發**的人在指定**編碼或者是儲存**原始碼的時候並沒有考慮什麼編碼,反正一句話,乙個**即使你用工具檢視或者檢視原始碼頭資訊檢視到他們的原始碼是utf-8,或者gbk之類的,也別信,哎,什麼東西信了就遭殃了,即http-equiv="content-type" content="text/html; charset=utf-8" />

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

import urllib2

import chardet

html = urllib2.urlopen("某**")

print chardet.detect(html) #這裡會輸出乙個字典

好,這整個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 = '未知'

能有什麼萬用的方法沒

資訊抽取之街道抽取

從給定的語料中抽取出相應的道路資訊。資料向塘北大道西50公尺 天龍路與龍華路交叉口北50公尺 觀瀾大道490號附近 成都市錦江區海椒市街13號附7號 玉蘭西路 團結北路23號 湖塘鎮火炬北路12號 昆明市晉寧區莊蹺西路28 金水路合作路28 1號 長公大道浙江顯家門業閬中總 旁 安陽街道嶺下東路4號...

C 中訪問URL之亂碼問題解決

今天在asp.net下實現乙個發簡訊的功能時需要呼叫現有的乙個url,並從本地取引數新增到url上,然後請求此url。但引數中含有漢字 中的url引數中含有漢字,在沒有使用urlencode 函式時直接請求,使用者得到的是亂碼。問題的原因和編碼沒有多大關係。問題在於url的格式 url中一般使用小於...

08 python之網路爬蟲之亂碼問題

亂碼問題有三種解決方式,下面我們通過乙個示例進行理解 示例 爬取4k美女桌布中的 import requests from lxml import etree import os from urllib import request if not os.path.exists 4kmeimei os...