爬虫实战:爬取微博明星的某一条动态的粉丝评论

2018/2/27,这是我的第一篇博客,写的目的很单纯,就是记录自己学习过程中遇到的问题以及解决方法。

初次学习爬虫,本人不才,代码其实也是学习一些B站视频。下面开始爬取的步骤

由于是为了爬取粉丝的评论,所以我们的目标就是要找到包含评论的代码,再将其解析并保存下来

1.找到代码

        爬取的网页是https://m.weibo.cn/status/4160547165300149(鹿晗和关晓彤宣布恋爱关系的那篇微博,别问我为什么,我不是鹿晗粉,瞎找的),通过查看源代码,没有找到关于粉丝评论的只言片语,找到开发者页面,滑动网页,有get请求弹出,进入请求网址,查看到具有粉丝评论的大串信息(我用的火狐浏览器)。至此,网页代码找到,现在可以开始写代码了。



2.关键部分,代码来了

# 模块导入

import requests
import pandas as pd
import json
import time

# 设置头部和cookie,反爬,伪装
header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0'}
Cookie = {'Cookie':'_T_WM=a44631c71b0383c78a0b6cc916df85b3; WEIBOCN_FROM=1110006030; M_WEIBOCN_PARAMS=uicode%3D20000061%26fid%3D4160547165300149%26oid%3D4160547165300149'}


url = 'https://m.weibo.cn/api/comments/show?id=4160547165300149&page=1'
html = requests.get(url,headers=header,cookies=Cookie)

ii = 1
while html.status_code == 200:
    ii = ii + 1
    url_next = 'https://m.weibo.cn/api/comments/show?id=4160547165300149&page=' + str(ii)
    
    # 仔细观察网页源码结构,上面得到的html是个多重嵌套字典
    try:
        for jj in range(len(html.json()['data']['data'])):
            data1 = [(html.json()['data']['data'][jj]['id'],
                      html.json()['data']['data'][jj]['user']['screen_name'],
                      html.json()['data']['data'][jj]['created_at'],
                     html.json()['data']['data'][jj]['source'],
                      html.json()['data']['data'][jj]['user']['id'],
                      html.json()['data']['data'][jj]['user']['profile_url'],
                     html.json()['data']['data'][jj]['user']['profile_image_url'],
                      html.json()['data']['data'][jj]['text'])]
            data2 = pd.DataFrame(data1)
            data2.to_csv('C:/Users/HP/Desktop/learn_test/weibo.csv', header=False, index=False, mode='a+')
    except:
        None

    time.sleep(2)  #设置爬取间隔,太过频繁有可能会被微博认定为爬虫(虽然我们本来就是爬虫,手动滑稽。。。)
    html = requests.get(url_next,headers=header,cookies=Cookie)

代码中我将爬取到的数据保存为csv文件,通过简单的数据分析,得知评论的人群中所用的手机型号多数为OPPO、vivo和苹果

3.遇到的问题

出现下列报错信息,网上找了很久解决方法,包括增加解码decode('utf-8'),都是没解决,最后还是靠大神慧眼,看出代码中头部'User-Agent'信息不完整,导致报错。

UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 30: ordinal not in range(256)

4.总结

理清了爬虫的基本流程及模块的简单应用



  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值