亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4407 | 回復: 2
打印 上一主題 下一主題

python用beautifulsoup抓取數(shù)據(jù)寫入csv文件時, 遇到了字符編碼的問題 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2014-04-20 03:48 |只看該作者 |倒序瀏覽
小弟是新手,在用beautifulsoup抓取數(shù)據(jù)寫入csv文件時,

遇到了字符編碼的問題,自認想通了按思路改卻總是會亂碼,

望各路大俠指點

#coding=utf-8      #讓這個python源文件按utf8編碼

from __future__ import print_function

from bs4 import BeautifulSoup

import urllib2
import codecs
import sys
import re
reload(sys)               #以上是引入庫
sys.setdefaultencoding("utf-8")
strFile='book.csv'                                
f = codecs.open(strFile,'w','utf-8')     #用寫入方式打開按utf8編碼的文檔
f.write('bookname'+'\n')   # 寫入一個屬性
print("\nGetting data for page...",end='')
url="http://www.bookschina.com/publishtj/02_AA_5_1_2/"
page2=urllib2.urlopen(url)               
soup=BeautifulSoup(page2)   #將url對應的網(wǎng)頁建立一個beautifulsoup對象
page2.close()
name = soup.find(attrs = {"class":"books"}).find(attrs ={"class":"bookContent"}).find("class":"titlein").text  #解析某本書的書名
n1 = name.decode("gbk")  #由于網(wǎng)頁http://www.bookschina.com/publishtj/02_AA_5_1_2/的編碼是GBK,所以由gbk解                                            碼  
n2 = n1.encode("utf-8")   #再編碼為utf8符合將要寫入的文件的編碼方式
f.write(n2+'\n')
print("\n done",end='')
f.close()
print("\n over")

總的來說,我是這樣想的:數(shù)據(jù)在傳遞時都是比特流,只是不同的編碼方式會將其映射到不同的文字,

解碼就是把比特流變成文字,編碼就是把文字變成比特流

代碼中的name在網(wǎng)頁中是按gbk編碼的,所以寫代碼時,應按gbk將其解碼,再按utf8將其編碼送入utf8方式打開的文件,變成按utf8編碼的文字

但是,用cmd執(zhí)行后,打開csv發(fā)現(xiàn)結果是亂碼:鑴e簮鑴㈣劙鍗よ劆鑴屾病鎺寵劌紕岃剹

請問這是怎么回事呢?各位高手,我想了一晚上,底子太淺,實在沒想通,望指點,感激不盡!

論壇徽章:
0
2 [報告]
發(fā)表于 2014-04-20 11:23 |只看該作者
本帖最后由 lionfun 于 2014-04-20 11:23 編輯

如果不是utf-8需要告訴BeautifulSoup網(wǎng)頁編碼:
  1. soup=BeautifulSoup(page2,from_encoding="gb18030")
復制代碼
同時使用from_encoding="gb18030"也可以解決utf8網(wǎng)頁編碼

論壇徽章:
0
3 [報告]
發(fā)表于 2014-04-20 17:45 |只看該作者
cmd 是GBK的,你直接試試decode('gbk'),不要再編成utf-8。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP