zoukankan      html  css  js  c++  java
  • 写Python爬虫遇到的一些坑

    毕业论文缺了点数据,于是去爬了下某猫投诉。想想上次写爬虫还是一年前大数据课程的时候。

    这次写也依旧遇到了一些坑,有Python本身的,有爬虫的,于是记录下。

    1.Unicode字符编码问题

    这段数据我是从summary,即摘要开始看的,summary的内容都是xxxxx。

    summary内容:

    u56e0u4e3au4ecau5929u5c31u8981u79bbu5f00u6df1u5733uff0cu8fd9u4e9bu4e1cu897fu90fdu7528u4e0du4e0au4e5fu5e26u4e0du8d70uff0cu8054u7cfbu5e97u5bb6uff0cu5e97u5bb6u4e0du7ed9u9000u3002u90fdu662fu6211u5e76u6ca1u53bbu62ffu8d27u7684u3002u5c31u662fu5f3au4e70u5f3au5356uff01uff01u8fd9u4e0eu5e73u53f0u7684u552eu540eu65e0u5fe7u548cu4e03u5929u65e0u7406u7531u4e0du7b26uff01uff01

    因为像被转码的样子,所以考虑下是否被转码了。丢到Unicode编码转换工具看下,点下Unicode转中文。

    对比下原文

    转换后的内容和网页显示的摘要内容一致,确实是将中文字符转换成了unicode编码。

    爬到网页内容后,我们获取了summary的内容,将其转换为中文即可。

    title=sn_title.split(',')[1] #获取标题
    title = eval('u"%s"' % title) #转换Unicode编码为文字

    2.变量类型问题

    有一说一Python的的变量虽然不用指定变量类型,比较方便,但是真的很坑啊。

    我转换时间戳的时候以为是int类型(time.localtime() 函数接受的int类型的参数),但实际上爬取到的内容本来就是字符串,再用字符串处理函数去处理,得到的也还是字符串。

    所以再进行处理之前要进行强制变量类型转换

    int(t)

    如果不清楚变量的变量类型的,可以获取下变量类型

    print(type(t))

    3.在使用 requests.get 后一定要获取 text 变量的内容

    html = requests.get(url,headers = headers, verify=False)
    html_data=html.text #网页源代码数据
    requests.get 返回的是一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。
    网页内容保存在返回的Response对象的text变量中。所以要先获取text变量中的内容。
    不要直接就拿返回的Response对象去用了。
  • 相关阅读:
    【AT1219】歴史の研究(回滚莫队模板)
    【洛谷4245】【模板】任意模数多项式乘法
    同余与逆元
    线性推逆元
    大整数类型!
    浅谈扩展欧几里得定理(附裴蜀定理)
    二进制串题解(国际考试备用题)
    String 的成员函数
    关于快速幂
    string的赋值
  • 原文地址:https://www.cnblogs.com/syxy/p/14673052.html
Copyright © 2011-2022 走看看