導航:首頁 > 數據處理 > pythin提取數據亂碼怎麼辦

pythin提取數據亂碼怎麼辦

發布時間:2022-12-26 18:42:08

『壹』 python爬蟲抓下來的網頁,中間的中文亂碼怎麼解決

對於python的中文編碼問題可以參考下面的帖子
http://python.jobbole.com/85482/

同時,對於網頁的中文亂碼,建立使用requests模塊代替urllib\urllib2
requests的content方法,對中文編碼,支持比較好,基本不會出現亂碼。
req=requests.get(url,cookies=mecookies)
print req.content

具體用法,參見下面兩個帖子,較詳細:
http://blog.csdn.net/iloveyin/article/details/21444613
http://blog.csdn.net/alpha5/article/details/24964009

『貳』 python中文亂碼是怎麼一回事

python報錯invalid character in identifier,意思就是「標識符中的無效字元」,檢查下有沒有字元是中文的,把中文字元改成英文字元再運行就可以了。

Python的作者有意的設計限制性很強的語法,使得不好的編程習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。

一個和其他大多數語言(如C)的區別就是,一個模塊的界限,完全是由每行的首字元在這一行的位置來決定的(而C語言是用一對花括弧{}來明確的定出模塊的邊界的,與字元的位置毫無關系)。這一點曾經引起過爭議。

因為自從C這類的語言誕生後,語言的語法含義與字元的排列方式分離開來,曾經被認為是一種程序語言的進步。不過不可否認的是,通過強制程序員們縮進(包括if,for和函數定義等所有需要使用模塊的地方),Python確實使得程序更加清晰和美觀。

(2)pythin提取數據亂碼怎麼辦擴展閱讀

Python 中文編碼:

Python中默認的編碼格式是 ASCII 格式,在沒修改編碼格式時無法正確列印漢字,所以在讀取中文時會報錯。

解決方法為只要在文件開頭加入# -*- coding: UTF-8 -*-或者# coding=utf-8就行了

注意:# coding=utf-8的=號兩邊不要空格。

實例:

(Python 2.0+)

#!/usr/bin/python

# -*- coding: UTF-8 -*-

print( "你好,世界" )

輸出結果為:

你好,世界

『叄』 為什麼Python寫的爬蟲有時候抓取的數據是亂碼

# -*- coding:utf-8 -*-

import urllib2
import re

url='http://tieba..com/p/3295185529?see_lz=1'

#打開頁面並進行轉碼
page=urllib2.urlopen(url).read().decode('gbk')
print 'Open %s'%url

#去掉超鏈接和圖片
none_re=re.compile('<a href=.*?>|</a>|<img.*?>')

#換行符轉換
br_re=re.compile('<br>')

#標題
title_re=re.compile('<h1 class="core_title_txt " title="(.*?)"')
#帖子內容
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')

#搜索文章標題,並去掉文件標題可能含有的特殊符號
title=re.search(title_re,page)
title=title.group(1).replace('\\','').replace('/','').replace(':','').replace('*','').replace('?','').replace('"','').replace('>','').replace('<','').replace('|','')

#搜索文本內容
content=re.findall(content_re,page)

with open('%s.txt'%title,'w') as f:
print 'Writing %s.txt now...'%title
for i in content:

#對html特殊符號進行替換處理
i=re.sub(none_re, '', i)
i=re.sub(br_re, '\n', i)

#寫入文本文件
f.write(i.encode('utf-8').strip()+'\n')
print 'Done!'

『肆』 Python+requests 爬取網站遇到中文亂碼怎麼辦

最近剛開始使用python來做爬蟲爬取相關數據,使用了python自帶的urllib和第三方庫requests,解析html使用了beautifulsoup以及lxml
這里說下lxml,lxml是python的一個html、xml解析庫,lxml使用XPath能快速,簡單的定位元素並獲取信息。下面進入正題

1. 遇到的中文亂碼問題
1.1 簡單的開始
使用requests來拔取網站內容十分方便,一個最簡單的代碼段只需要2-3行代碼就行。

點擊(此處)折疊或打開

『伍』 為什麼python寫的爬蟲有時候抓取的數據是亂碼

1. 使用chrome瀏覽器,打開示例頁面http://tieba..com/p/3295185529?see_lz=1
2. 在帖子標題處,右鍵選擇"審查元素",可以看到標題的源代碼

3. 進行簡單的分析,我們需要獲取的是title後面的內容,根據頁面實際內容,我們編寫相應的正則表達式:
title_re=re.compile('<h1 class="core_title_txt " title="(.*?)"')
4. 同理,我們對帖子內容進行"審查元素",得到內容的源代碼

5. 編寫相應的正則表達式如下:
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')
6. 這樣通過urllib2打開頁面後,使用上述的正則表達式進行匹配,再對標題和文本內容進行相應的處理即可

『陸』 python爬取數據出現亂碼怎麼辦

使用decode解碼

str=u'u662f'
print(str.encode().decode('utf-8'))

或者在py文件開頭,添加

#-*-coding:utf-8-*-

『柒』 python讀取共享內存數據時出現亂碼

1. Python文件設置編碼 utf-8 (文件前面加上 #encoding=utf-8)
2. MySQL資料庫charset=utf-8
3. Python連接MySQL是加上參數 charset=utf8
4. 設置Python的默認編碼為 utf-8 (sys.setdefaultencoding(utf-8)

『捌』 python輸出到文件亂碼如何解決

python代碼文件的編碼
py文件默認是ASCII編碼,中文在顯示時會做一個ASCII到系統默認編碼的轉換,這時就會出錯:SyntaxError: Non-ASCII character。需要在代碼文件的第一行或第二行添加編碼指示:
1 # coding=utf-8 ##以utf-8編碼儲存中文字元
2 print '中文'
像上面那樣直接輸入的字元串是按照代碼文件的編碼來處理的,如果用unicode編碼,有以下三種方式:
1 s1 = u'中文' #u表示用unicode編碼方式儲存信息
2 s2 = unicode('中文','gbk')
unicode是一個內置函數,第二個參數指示源字元串的編碼格式。
decode是任何字元串具有的方法,將字元串轉換成unicode格式,參數指示源字元串的編碼格式。
encode也是任何字元串具有的方法,將字元串轉換成參數指定的格式。
(2)、字元串的編碼
用 u'漢字' 構造出來的是unicode類型,不用的話構造出來是str類型
str的編碼是與系統環境相關的,一般就是sys.getfilesystemencoding()得到的值
所以從unicode轉str,要用encode方法
從str轉unicode,所以要用decode
例如:
# coding=utf-8 #默認編碼格式為utf-8
s = u'中文' #unicode編碼的文字
print s.encode('utf-8') #轉換成utf-8格式輸出
但當python中間處理非ASCII編碼時,經常會出現如下錯誤:
UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)
0x??是超出128的數字,python在默認的情況下認為語言的編碼是ascii編碼,所以無法處理其他編碼,需要設置python的默認編碼為所需要的編碼。
一個解決的方案是在代碼中添加:
import sys
reload(sys)
sys.setdefaultencoding('utf-8') (其中utf-8為你想輸出的字元編碼)
解釋:
sys.setdefaultencoding方法在python導入site.py後就刪除了(具體代碼查看site.py就可以看到)因此如果想用的話可以再重新load進入
總結:
u=u'unicode編碼文字'
g=u.encode('gbk') #轉換為gbk格式
print g #此時為亂碼,因為當前環境為utf-8,gbk編碼文字為亂碼
str=g.decode('gbk').encode('utf-8') #以gbk編碼格式讀取g(因為他就是gbk編碼的,需要事先知道它是GBK編碼)並轉換為utf-8格式輸出
print str #正常顯示中文(同文件輸出)
安全的方法:
s.decode('gbk','ignore').encode('utf-8′) #以gbk編碼讀取(當然是讀取gbk編碼格式的文字了)並忽略錯誤的編碼,轉換成utf-8編碼輸出。
推薦學習《Python教程》!

閱讀全文

與pythin提取數據亂碼怎麼辦相關的資料

熱點內容
成熟的男人和程序員應該選哪個 瀏覽:587
信息量是怎麼算 瀏覽:778
大數據什麼是績效考核 瀏覽:622
旅遊優惠信息哪裡看 瀏覽:600
高速倒車多久會收到信息 瀏覽:401
杭州聯通信息中心電話是多少 瀏覽:356
電力系統單機信息上傳是怎麼工作 瀏覽:68
東鳳最大的市場是哪個 瀏覽:97
杭州地鐵技術管理人員待遇怎麼樣 瀏覽:176
工廠合資技術分多少 瀏覽:986
羅馬交易所的幣是哪裡來的 瀏覽:343
為什麼交易貓發貨了沒反應 瀏覽:768
哪些渠道可以獲取到新店信息 瀏覽:280
系統技術升級中請稍後登錄什麼意思 瀏覽:334
產權轉讓怎麼交易 瀏覽:754
如何看懂產品的分析 瀏覽:958
如何把手薄數據做成表格 瀏覽:934
數據分析設計需要什麼軟體 瀏覽:80
小程序中wps編輯完成後如何保存 瀏覽:729
如何地推賣產品 瀏覽:228