#?需求:
爬取小豬網(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上有個類似于花朵的特殊字符?,所有無法編碼带膀。
報(bào)了類似于這樣的錯誤: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ù)民族文字。現(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')