Homework1


#?需求

爬取小豬網(wǎng)上的詳細(xì)租房信息,實(shí)現(xiàn)遍歷爬取,并且把結(jié)果放到excel保存。

##數(shù)據(jù)內(nèi)容:

title,price,address,host_name, rating, img_path

# 結(jié)果:


# 代碼:


'''

abcdefg

'''


- first one

-second one

難點(diǎn)和經(jīng)驗(yàn):

1. split()方法

str ='? www.test111.com.cn? '

print(str.split())#前后去空格,按照空格分隔

print(str.split("."))#按照“.”分隔

print(str.split(".")[-3])#取分隔后的第幾位

print(str.split(".",1))#分隔1次

print(str.split(".",2))#分隔2次

str2 =''.join(str.split())#列表轉(zhuǎn)字符串

print(str2.split("."))

list2 =list(str)

print(list2)#字符串轉(zhuǎn)列表

輸出:

['www.test111.com.cn']

['? www', 'test111', 'com', 'cn? ']

test111

['? www', 'test111.com.cn? ']

['? www', 'test111', 'com.cn? ']

['www', 'test111', 'com', 'cn']

[' ', ' ', ' ', 'w', 'w', 'w', '.', 't', 'e', 's', 't', '1', '1', '1', '.', 'c', 'o', 'm', '.', 'c', 'n', ' ', ' ', ' ']




2. encoding問題

因?yàn)樵谀硹l記錄的title上有個類似于花朵的特殊字符?,所有無法編碼。

報了類似于這樣的錯誤:Traceback (most recent call last):? File "C:/Users/Administrator/PycharmProjects/untitled/spider/160822_xiaozhu.py", line 41, inwriter.writerow([dict2['title'],dict2['price'],dict2['address'],dict2['host_name'],dict2['rating'],dict2['img']])

UnicodeEncodeError: 'gbk' codec can't encode character '\u273f' in position 0: illegal multibyte sequence。

后來上網(wǎng)查詢了中文編碼的各種類型:

1、GB2312

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區(qū)的內(nèi)碼范圍高字節(jié)從B0-F7,低字節(jié)從A1-FE,占用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

在windows中的代碼頁是CP936

2、GBK

GBK最初是由微軟對GB2312的擴(kuò)展,也就是CP936字碼表(Code Page 936)的擴(kuò)展(原來的CP936和GB 2312-80一模一樣),最初出現(xiàn)于Windows 95簡體中文版中,由于Windows產(chǎn)品的流行和在大陸廣泛被使用,中華人民共和國國家有關(guān)部門將其作為技術(shù)規(guī)范。注意GBK并非國家正式標(biāo)準(zhǔn),只是國家技術(shù)監(jiān)督局標(biāo)準(zhǔn)化司、電子工業(yè)部科技與質(zhì)量監(jiān)督司發(fā)布的“技術(shù)規(guī)范指導(dǎo)性文件”。雖然GBK收錄了所有Unicode 1.1及GB 13000.1-93之中的漢字,但是編碼方式與Unicode 1.1及GB 13000.1-93不同。僅僅是GB 2312到GB 13000.1-93之間的過渡方案。GBK收錄了21886個符號,它分為漢字區(qū)和圖形符號區(qū)。漢字區(qū)包括21003個字符。

GBK作為對GB2312的擴(kuò)展,在現(xiàn)在的windows系統(tǒng)中仍然使用代碼頁CP936表示,但是同樣的936的代碼頁跟一開始的936的代碼頁只支持GB2312編碼不同,現(xiàn)在的936代碼頁支持GBK的編碼,GBK同時也向下兼容GB2312編碼。

3、GB18030

2000年的GB18030取代了GBK1.0的正式國家標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數(shù)民族文字?,F(xiàn)在的PC平臺必須支持GB18030,對嵌入式產(chǎn)品暫不作要求。所以手機(jī)、MP3一般只支持GB2312。

GB18030在windows中的代碼頁是CP54936。

4、GB13000

GB13000等同于國際標(biāo)準(zhǔn)的《通用多八位編碼字符集(UCS)》ISO10646.1,就是等同于Unicode的標(biāo)準(zhǔn),代碼頁等等的都使用UTF的一套標(biāo)準(zhǔn)。

從ASCII、GB2312、GBK到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中總是有相同的編碼,后面的標(biāo)準(zhǔn)支持更多的字符。在這些編碼中,英文和中文可以統(tǒng)一地處理。區(qū)分中文編碼的方法是高字節(jié)的最高位不為0。按照程序員的稱呼,GB2312、GBK到GB18030都屬于雙字節(jié)字符集(DBCS)。

原因以及解決辦法,這個類似于?的中文字符應(yīng)該是超過了GBK和GB2312的字符全集,所以在打開csv的時候encoding參數(shù)設(shè)置成GB19030就可以順利解碼并且在CSV上正確顯示中文。

csvFile=open("d:/files/test.csv",'w+',newline='',encoding='GB18030')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 字符集和編碼簡介 在編程中常常可以見到各種字符集和編碼,包括ASCII,MBCS,Unicode等字符集。確切的說...
    蘭山小亭閱讀 9,076評論 0 13
  • 什么是字符集,什么是字符編碼,它做什么用? 字符(Charcter)是文字與符號的總稱,包括文字、圖形符號、數(shù)學(xué)符...
    laravel閱讀 371評論 0 0
  • 因?yàn)樽蛱彀滋彀言撟龅氖虑槎加行实赝瓿闪?,并且學(xué)習(xí)到了一個觀點(diǎn),注意力相比較時間與金錢是最重要的。一種前所未有的開...
    閃閃貝貝君閱讀 183評論 0 0
  • 假期已經(jīng)過去兩個月了吧,其實(shí)這篇小故事應(yīng)該剛開學(xué)就整理好的,因?yàn)榍岸螘r間一直在做其他事,所以才拖了那么久。想想真不...
    喵文文閱讀 574評論 3 2
  • 相見、相識,卻不相戀 難得友誼 相知,自知不能相戀 何懼分離,暗自傷 何時知彼心,難分離 何時啟言語,難表白 待你...
    Y凰閱讀 258評論 0 1

友情鏈接更多精彩內(nèi)容