• 猫眼电影评论(1366错误)-版本一


    import pymysql as pm
    import json
    import time
    import requests
    #网页版猫眼只能显示热门短评,只有手机版app才能显示所有评论,所以抓包关键
    # 建立数据库
    db = pm.connect(host='localhost', user='root', password='123456', db='lianjia')
    # 声明游标
    cursors = db.cursor()
    sql = 'insert into maoyan_data(date,city,score,comment,nick) values(%s,%s,%s,%s,%s)'
    
    for i in range(0,10):
             time.sleep(2)
             #offset不应该每次递增1次,因为每页有15条短评,而且第二页跟第一页只有一条短评不一样!
             url ='http://m.maoyan.com/mmdb/comments/movie/1235560.json?_v_=yes&offset='+ str(i*15)
             #这是评论网页地址,1235560是电影白蛇缘起的id
             html = requests.get(url).content
             #获得内容
             data = json.loads(html.decode('utf-8'))['cmts']#获得cmts内的内容
             # print(data)
             #loads方法是把json对象转化为python对象
             for item in data:
                   tomato=({'date':item['time'].split(' ')[0],'city':item['cityName'],
                                'score':item['score'],'comment':item['content'],
                                'nick':item['nick']})#可以帮助忽略index,自动递增
    
                   #注意!comment和Nick应该使用utfmd4字符集,因为可能出现表情符号!
                   params = (tomato["date"], tomato["city"], tomato["score"], tomato["comment"], tomato["nick"])
                   cursors.execute(sql, params)
                   # commit是把查询语句提交到数据库内
                   db.commit()
    db.close()
    

      经验:

    1.猫眼的网页版只显示极少数热门短评,只有在APP端才能看到所有评论,所以笔者所用的url ='http://m.maoyan.com/mmdb/comments/movie/1235560.json?_v_=yes&offset='+ str(i*15)就是在网上看到别人用的,可以记一下,等到以后学习爬取APP的时候对照

    2.offset不应该每次递增1次,因为每页有15条短评,而且第二页跟第一页只有一条短评不一样!刚开始的时候,笔者没有发现这个问题,然后爬取的数据都重复了,之后上网一查才知道还有这种操作,但是改为str(i*15)就可以简单解决这个问题了

    3.在mysql中建立表格的时候应该注意,comment和Nick应该长度比较大,特别是comment,而且可能会出现表情,导致程序运行错误((1366, "Incorrect string value: '\xF0\x9F\x8D\xAC\xF0\x9F...' for column 'nick' at row 1")),所以要把comment和Nick的字符集修改为utfmd4,这样就可以把无法识别的表情转换为?

  • 相关阅读:
    HBase MapReduce 一些 ClassNotFoundException 所缺少的jar包
    Eclipse 连接不上 hadoop 的解决办法
    Log4j 2 配置
    mysql 查询结果显示行号
    js刷新页面方法 -- (转)
    python 错误--UnboundLocalError: local variable '**' referenced before assignment
    Webview 中FaultyInfo代码说明
    HTML中设置超链接字体 & 字体颜色
    apache log 按日期记录 格式 <GOOD>-- (转)
    linux 下 /bin /sbin 的区别 -- (转)
  • 原文地址:https://www.cnblogs.com/fodalaoyao/p/10435702.html
Copyright © 2020-2023  润新知