Homework1

作者: tcc26 | 来源:发表于2016-08-23 13:38 被阅读0次

    需求

    爬取小猪网上的详细租房信息,实现遍历爬取,并且把结果放到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')

    相关文章

      网友评论

          本文标题:Homework1

          本文链接:https://www.haomeiwen.com/subject/xowwsttx.html