Homework1


需求

爬取小猪网上的详细租房信息,实现遍历爬取,并且把结果放到excel保存。

##数据内容:

title,price,address,host_name, rating, img_path

# 结果:


# 代码:


'''

abcdefg

'''


- first one

-second one

难点和经验:

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())#列表转字符串

print(str2.split("."))

list2 =list(str)

print(list2)#字符串转列表

输出:

['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问题

因为在某条记录的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。

后来上网查询了中文编码的各种类型:

1、GB2312

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

在windows中的代码页是CP936

2、GBK

GBK最初是由微软对GB2312的扩展,也就是CP936字码表(Code Page 936)的扩展(原来的CP936和GB 2312-80一模一样),最初出现于Windows 95简体中文版中,由于Windows产品的流行和在大陆广泛被使用,中华人民共和国国家有关部门将其作为技术规范。注意GBK并非国家正式标准,只是国家技术监督局标准化司、电子工业部科技与质量监督司发布的“技术规范指导性文件”。虽然GBK收录了所有Unicode 1.1及GB 13000.1-93之中的汉字,但是编码方式与Unicode 1.1及GB 13000.1-93不同。仅仅是GB 2312到GB 13000.1-93之间的过渡方案。GBK收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。

GBK作为对GB2312的扩展,在现在的windows系统中仍然使用代码页CP936表示,但是同样的936的代码页跟一开始的936的代码页只支持GB2312编码不同,现在的936代码页支持GBK的编码,GBK同时也向下兼容GB2312编码。

3、GB18030

2000年的GB18030取代了GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

GB18030在windows中的代码页是CP54936。

4、GB13000

GB13000等同于国际标准的《通用多八位编码字符集(UCS)》ISO10646.1,就是等同于Unicode的标准,代码页等等的都使用UTF的一套标准。

从ASCII、GB2312、GBK到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。

原因以及解决办法,这个类似于❀的中文字符应该是超过了GBK和GB2312的字符全集,所以在打开csv的时候encoding参数设置成GB19030就可以顺利解码并且在CSV上正确显示中文。

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 12,887评论 0 13
  • 什么是字符集,什么是字符编码,它做什么用? 字符(Charcter)是文字与符号的总称,包括文字、图形符号、数学符...
    laravel阅读 2,586评论 0 0
  • 因为昨天白天把该做的事情都有效率地完成了,并且学习到了一个观点,注意力相比较时间与金钱是最重要的。一种前所未有的开...
    闪闪贝贝君阅读 1,310评论 0 0
  • 假期已经过去两个月了吧,其实这篇小故事应该刚开学就整理好的,因为前段时间一直在做其他事,所以才拖了那么久。想想真不...
    喵文文阅读 3,493评论 3 2
  • 相见、相识,却不相恋 难得友谊 相知,自知不能相恋 何惧分离,暗自伤 何时知彼心,难分离 何时启言语,难表白 待你...
    Y凰阅读 1,684评论 0 1

友情链接更多精彩内容