信息采集之微博热门自定以搜索

之前写了一个微博的定向博文评论搜索,但是前提条件是需要获取到博文链接。但是现在大数据分析,以及一些情感分析,是需要大量的有关键字博文的信息的。所以这次做了相关的热门博文采集,求实也可以成为关键字微博博文信息采集。

没什么难点,只是注意几点

  1. 我用的手机端访问,总是被反爬,这里需要一些备用的UA,随机跟换UA,会好很多。
  2. 我个人更偏向于直接分析Ajax数据,因为json数据显示比较多。所以解析起来真的方便好多
  3. 正则真的是痛点,我要加强
  4. 这次的解析信息没有做存储在excel真的是因为那个博文提取把我搞累了。还是正则没用好。所以直接采取打印了
  5. 等以后心态好了,再做后面的数据清洗吧。

上代码:

'''
微博热搜博文统计 
需求:热搜关键词
  统计博文内容,点赞数,转评数
'''

from requests_html import HTMLSession
import json,random,re
from pprint import pprint

session = HTMLSession()
# 手机UA伪装列表  谷歌浏览器
UA=[...]

def main():
    # https: // m.weibo.cn / api / container / getIndex
    page = 1
    while page>=1:
        print('第{}页开始==='.format(page))
        # 微博内容列表连接
        start_url = 'https://m.weibo.cn/api/container/getIndex'
        # 参数
        parames = {'containerid': '100103type=60&q={}&t=10'.format(key),
                   'title': '热门-{}'.format(key),
                   'cardid': 'weibo_page',
                   'xtparam': 'title=热门&mid=&q={}'.format(key),
                   'luicode': '10000011',
                   'lfid': '100103type=1&t=10&q={}'.format(key),
                   'page': str(page)}

        res = session.get(url=start_url, headers=headers, params=parames)

        # print(res.json())
        # break

        # 判断 如果页码里面没有数据 则终止 说明翻页结束
        if res.json()['ok'] == 0:
            break
        else:
            #     在这里解析  这是json数据集
            content_json_list = res.json()
            # print(content_json_list)
            json_parse(content_json_list)
            page+=1




 #     在这里解析  这是json数据集
def json_parse(content_json_list):
    cards = content_json_list['data']['cards']

    for card in cards:
        # pprint(card)

        # 创建时间
        create_time = card['mblog']['created_at']
        # 评论数量
        comments_count = card['mblog']['comments_count']
        # 转发数
        reposts_count = card['mblog']['reposts_count']
        # 点赞数
        attitudes_count = card['mblog']['attitudes_count']
        # 博文bid _json数据
        bid_num=card['mblog']['bid']
        # 博文详情链接   的 json数据
        weibo_detail_text_url='https://m.weibo.cn/statuses/show?id={}'.format(bid_num)
        # print(weibo_detail_text_url)

        text=weibo_text_parse(weibo_detail_text_url)
        print('创建时间:'+create_time)
        print('评论数:'+str(comments_count))
        print('转发数:'+str(reposts_count))
        print('点赞数:'+str(attitudes_count))
        print('博文:'+text)
        print('--------------------------------------------------------------------------------------')

       

 #进入博文链接  获取博文内容
def weibo_text_parse(url):
    res_json=session.get(url,headers=headers).json()
    # 博文内容
    text=res_json['data']['text']
    return text





if __name__ == '__main__':

    headers={'User-Agent':random.choice(UA),'accept': 'application/json, text/plain, */*',
    'accept-encoding': 'gzip, deflate, br',
    'mweibo-pwa': '1',
    'Upgrade-Insecure-Requests': '1'}
    key=input('请输入热搜关键词:')

    # key='鹿晗状态'
    main()

最后出来就是这样的:
如果以后有客户遇到这样的需求,我只需要稍微改进一下就好了…

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dragon啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值