精华内容
下载资源
问答
  • 原标题:Python获取微博热搜的方法微博热搜的爬取...wvr=6Python获取微博热搜的方法Python获取微博热搜的方法 1.分析网页的源代码:右键--查看网页源代码,从网页代码中可以获取到信息有:(1)热搜的名字都在的子节...

    原标题:Python获取微博热搜的方法

    微博热搜的爬取需要用到lxml和requests两个库

    url=https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6

    Python获取微博热搜的方法

    f4253513eba5725b32f95a26b3ee19b4.pngPython获取微博热搜的方法

    1.分析网页的源代码:右键--查看网页源代码,从网页代码中可以获取到信息有:

    (1)热搜的名字都在

    的子节点

    (2)热搜的排名都在

    的里(注意置顶微博是没有排名的!)

    (3)热搜的访问量都在

    的子节点

    2.requests获取网页

    (1)先设置url地址,然后模拟浏览器(这一步可以不用)防止被认出是爬虫程序。

    ###网址

    url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"

    ###模拟浏览器,这个请求头windows下都能用

    header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

    (2)利用requests库的get()和lxml的etree()来获取网页代码

    ###获取html页面

    html=etree.HTML(requests.get(url,headers=header).text)

    3.构造xpath路径

    上面第一步中三个xath路径分别是:

    affair=html.xpath('//td[@class="td-02"]/a/text()')

    rank=html.xpath('//td[@class="td-01 ranktop"]/text()')

    view=html.xpath('//td[@class="td-02"]/span/text()')

    xpath的返回结果是列表,所以affair、rank、view都是字符串列表

    4.格式化输出

    需要注意的是affair中多了一个置顶热搜,我们先将他分离出来。

    top=affair[0]

    affair=affair[1:]

    这里利用了python的切片。

    print('{0:<10}\t{1:<40}'.format("top",top))

    for i in range(0, len(affair)):

    print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))

    5.全部代码

    ###导入模块

    import requests

    from lxml import etree

    ###网址

    url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"

    ###模拟浏览器

    header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

    ###主函数

    def main():

    ###获取html页面

    html=etree.HTML(requests.get(url,headers=header).text)

    rank=html.xpath('//td[@class="td-01 ranktop"]/text()')

    affair=html.xpath('//td[@class="td-02"]/a/text()')

    view = html.xpath('//td[@class="td-02"]/span/text()')

    top=affair[0]

    affair=affair[1:]

    print('{0:<10}\t{1:<40}'.format("top",top))

    for i in range(0, len(affair)):

    print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))

    责任编辑:

    展开全文
  • 每天微博热搜都在不定时的变,通过抓取热搜数据,可以方便我们知道每天的热搜内容。python的几行代码就能简单爬取到热搜的数据。1.数据抓取首先,我们得知道微博热搜内容的具体链接。如下图所示,通过访问网站链接,...

    每天微博热搜都在不定时的变,通过抓取热搜数据,可以方便我们知道每天的热搜内容。

    python的几行代码就能简单爬取到热搜的数据。

    1.数据抓取

    首先,我们得知道微博热搜内容的具体链接。

    如下图所示,通过访问网站链接,可以拿到当天此时的热搜数据。接下来,我们需要通过代码去实现它。

    160a10f8e543

    image.png

    def get_html_data(self):

    res = requests.get(self.url, headers=self.headers).text

    return res

    通过requests模块包,我们就能得到网页的html文件,接下来就是要对html文件的处理解析。

    2.数据处理

    为了更好的分析html文件内容,我复制到编辑器上分析文本数据。

    通过分析,不难发现,我们所想要的数据如下图所示结构中。

    160a10f8e543

    image.png

    这里主要是获取四个要素 热搜排名,热搜话题,话题热度,热搜标签。

    简单实现代码如下:

    def deal_html_data(self, res):

    res = BeautifulSoup(res, "lxml")

    # 遍历热搜的标签

    # #pl_top_realtimehot 根据id, > table > tbody > tr 逐层查找

    for item in res.select("#pl_top_realtimehot > table > tbody > tr"):

    # 按类名.td-01提取热搜排名

    _rank = item.select_one('.td-01').text

    if not _rank:

    continue

    # 按类名.td-02提取热搜关键词

    keyword = item.select_one(".td-02 > a").text

    # 提取热搜热度

    heat = item.select_one(".td-02 > span").text

    # 提取热搜标签

    icon = item.select_one(".td-03").text

    self.hot_list.append({"rank": _rank, "keyword": keyword, "heat": heat, "icon": icon, "time":

    datetime.now().strftime("%Y-%m-%d %H:%M:%S")})

    这里采用BeautifulSoup中select,和select_one去解析html文件。

    这里对select和select_one做一下简单补充。

    # 通过标签名查找

    soup.select_one('a')

    # 通过类名查找

    soup.select_one('.td-02')

    # 通过ID去查找

    soup.select_one('#pl_top_realtimehot')

    # 组合查找,根据ID及标签层级关系查找

    res.select("#pl_top_realtimehot > table > tbody > tr")

    通过以上处理,我们就能得到所需要的数据。

    160a10f8e543

    image.png

    3.数据存储

    这里仅是把数据简单存储到数据库中,具体看效果图。

    160a10f8e543

    image.png

    更多源码,请参考原文

    展开全文
  • 当我去搜微博热搜的时候,是这样的:界面需要一直手动刷新,而且我简单搜了一下,似乎是没有相关的实时统计图的,于是我尝试着自己写一个。(ps.要是有哪位大佬知道有现成的欢迎留言哦,定将感激...

    基于PHP爬虫的微博热搜实时监控平台

    背景

    在学习、“脱发”之余,便是去微博看看有没有发生什么有趣的事情,或是了解一下正在发生着哪些“大事”,亦或是某些让我久久不能平复的事…

    Whatever~ 因为重点并不是这个

    重点是,当我去搜微博热搜的时候,是这样的:

    e119006d43e7ea93f0f5005b748ad359.png

    界面需要一直手动刷新,而且我简单搜了一下,似乎是没有相关的实时统计图的,于是我尝试着自己写一个。

    (ps.要是有哪位大佬知道有现成的欢迎留言哦,定将感激涕零~)

    一、整体思路

    一个简单的想法在我婶婶的脑海里浮现了出来:首先搜集数据,然后通过一个web页面来进行统计展示。

    对于搜集数据当然是写个爬虫就好了,首先脑里闪过的是用python,但是人总是喜欢尝试下新东西,于是我选择试试用PHP来写爬虫。所以,大体框架便出来了:

    16b82a4c53de578eac282abcea9a47f3.png

    具体相关的技术大家可参考:

    二、数据爬取

    1.获取HTML

    PHP爬取微博热搜页面,得到HTML源码:

    function getUrlContent($url){//通过url获取html内容

    $ch = curl_init();

    curl_setopt($ch,CURLOPT_URL,$url);

    curl_setopt($ch,CURLOPT_USERAGENT,"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1 )");

    curl_setopt($ch,CURLOPT_HEADER,1);

    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

    $output = curl_exec($ch);

    curl_close($ch);

    return $output;

    }

    复制代码

    当然,也可以直接用file_get_contents等方法。

    2.提取数据

    通过正则等方式,将HTML中的table标签提取出来,并转换为Array类型:

    function getTable($html){

    preg_match_all("/

    $table = $table[0][0];

    $table = preg_replace("'

    $table = preg_replace("'

    ]*?>'si","",$table);

    $table = preg_replace("'

    ]*?>'si","",$table);

    $table = str_replace("

    ","{tr}",$table);

    $table = str_replace("","{td}",$table);

    //去掉 HTML 标记

    $table = preg_replace("']*?>'si","",$table);

    //去掉空白字符

    $table = preg_replace("'([rn])[s]+'","",$table);

    $table = str_replace(" ","",$table);

    $table = str_replace(" ","",$table);

    $table = explode('{tr}', $table);

    array_pop($table);

    foreach ($table as $key=>$tr) {

    // 自己可添加对应的替换

    $tr = str_replace("\n\n","",$tr);

    $td = explode('{td}', $tr);

    array_pop($td);

    $td_array[] = $td;

    }

    return $td_array;

    }

    复制代码

    3.返回数据

    爬取整理数据并返回以便前端调用:

    $html = getUrlContent("https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6");

    $table = getTable($html);

    $table = array_slice($table,2); # 把前面多余部分截掉

    echo json_encode($table);

    复制代码

    至此,可将以上代码整合为一个php文件,设名为“weibo.php”,以待前端通过ajax的方式调用。

    三、数据可视化

    实不相瞒:前端咱不行,但四处搬砖、东拼西凑还是比较拿手的~ 现学了echarts.js,再看看网上前辈大佬们的演示,最终还是“凑”了出来。

    1.画柱状图

    利用echarts.js在画布上画出统计的柱状图:

    function CreateBar(keywords,value){

    //初始化echarts实例

    var myChart = echarts.init(document.getElementById('chartmain'));

    myChart.on('click',function(param){

    window.open('#');

    });

    //指定图标的配置和数据

    var option = {

    title:{

    text:''

    },

    tooltip:{},

    grid:{

    top:"15%",

    left:"16%",

    bottom:"5%"

    },

    legend:{

    data:['热搜词']

    },

    xAxis:{

    },

    yAxis:{

    data:keywords

    },

    series:[{

    name:'搜索量',

    type:'bar',

    itemStyle: {

    normal: {

    color: '#ff9406'

    }

    },

    data:value

    }]

    };

    myChart.setOption(option);

    }

    复制代码

    这里需要两个参数(两个Array),即热搜词和搜索量,而它们得通过ajax的方式向后端发送请求获取。

    2.ajax请求数据

    通过ajax的方式向后端发起请求(即之前提到的weibo.php),以获得数据:

    function GetData(){

    $.ajax({

    type: "post", //数据提交方式(post/get)

    url: "weibo.php", //提交到的url

    dataType: "json", //返回的数据类型格式

    success: function(msg){

    //返回成功的回调函数

    if(msg!=''){

    var data = eval(msg); //将返回的json数据进行解析,并赋给data

    var keywords = [];

    var value = [];

    for(var i=0; i < 20; i++){ // 取TOP20

    keywords.push(data[i][1].split('\n')[0]);

    value.push(Number(data[i][1].split('\n')[1]));

    }

    CreateBar(keywords.reverse(),value.reverse());

    setInterval("GetData()",10000); // 间隔10S

    }

    },

    error:function(msg){

    //返回失败的回调函数

    console.log(msg);

    setInterval("GetData()",30000); // 间隔30S

    }

    });

    }

    复制代码

    注:这里用了**setInterval()**的方法来实现定时发送异步请求,以实现实时监控。

    四、效果展示

    经过不懈的尝试和修改,最后达到了一个还算比较满意的效果,大概就是这个样子啦:

    bc142d41bf4595bf597b2206d5b79b0a.gif

    写在最后

    实现这个目标,还有一种思路:先用脚本(如python)获取数据并存入数据库,然后再通过读取数据库来进行数据展示,这样也许更加灵活而且在搜集到一定量的数据后还能尝试更多有趣的统计分析。

    文中如有不足,还望大家批评指正!

    最后,感谢各位大大的耐心阅读~

    展开全文
  • 微博热搜热搜爬取.txt

    2021-05-27 17:10:22
    可以爬取每日微博热搜
  • 微博热搜的爬取较为简单,我只是用了lxml和requests两个库 url=https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6 1.分析网页的源代码:右键--查看网页源代码. 从网页代码中可以获取到...

    微博热搜的爬取较为简单,我只是用了lxml和requests两个库

    url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6

    1.分析网页的源代码:右键--查看网页源代码.

    从网页代码中可以获取到信息

    (1)热搜的名字都在<td class="td-02">的子节点<a>里

    (2)热搜的排名都在<td class=td-01 ranktop>的里(注意置顶微博是没有排名的!)

    (3)热搜的访问量都在<td class="td-02">的子节点<span>里

    2.requests获取网页

    (1)先设置url地址,然后模拟浏览器(这一步可以不用)防止被认出是爬虫程序。

    1

    2

    3

    4

    ###网址

    url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"

    ###模拟浏览器,这个请求头windows下都能用

    header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

    (2)利用req uests库的get()和lxml的etr ee()来获 取网页代码

    1

    2

    ###获取html页面

      html=etree.HTML(requests.get(url,headers=header).text)

    3.构造xpath路径

    上面第一步中三个xath路径分别是:

    1

    2

    3

    affair=html.xpath('//td[@class="td-02"]/a/text()')

    rank=html.xpath('//td[@class="td-01 ranktop"]/text()')

    view=html.xpath('//td[@class="td-02"]/span/text()')

      xpath的返回结果是列表,所以affair、rank、view都是字符串列表

      4.格式化输出

      需要注意的是affair中多了一个置顶热搜,我们先将他分离出来。

    1

    2

    top=affair[0]

    affair=affair[1:]

    这里利用了python的切片。

    1

    2

    3

    print('{0:<10}\t{1:<40}'.format("top",top))

     for i in range(0, len(affair)):

       print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))

    这里还是没能做到完全对齐。。。

     5.全部代码

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    ###导入模块

    import requests

    from lxml import etree

    ###网址

    url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"

    ###模拟浏览器

    header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

    ###主函数

    def main():

      ###获取html页面

      html=etree.HTML(requests.get(url,headers=header).text)

      rank=html.xpath('//td[@class="td-01 ranktop"]/text()')

      affair=html.xpath('//td[@class="td-02"]/a/text()')

      view = html.xpath('//td[@class="td-02"]/span/text()')

      top=affair[0]

      affair=affair[1:]

      print('{0:<10}\t{1:<40}'.format("top",top))

      for i in range(0, len(affair)):

        print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))

    main()

    结果展示:

    总结

    以上所述是小编给大家介绍的Python网络爬虫之爬取微博热搜,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    展开全文
  • Android Kotlin retrofit2 获取微博热搜列表。自己动手撸一个微博热搜列表熟悉一下Kotlin网络请求模块
  • 追踪每一条微博热搜的热度,并以折线图展示,支持大量数据,基于动态展示
  • 微博热搜爬取生成词云(代码可用)
  • 主要介绍了Python网络爬虫之爬取微博热搜的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Python爬取微博热搜数据之炫酷可视化

    千次阅读 多人点赞 2021-02-15 15:11:17
    微博热搜刷一刷,聚焦热点不愁卖; 闲来发呆怎么办, B 站抖音快手来; 要是深夜无聊备,微信文章踩一踩; 哈哈哈,小小的活跃一下气氛 在这个万物互联的时代,已不再是那个“从前慢,车马慢....
  • 微博热搜小爬虫

    2019-03-10 18:43:12
    可以爬取微博热搜标题,热度并生成EXCEL文件。用的是request_html这个强大的库,可以在代码中自行加入爬取热搜链接的部分,拿来练手很合适
  • 个人博客:... ... 使用爬虫把微博热搜和天气预报爬下来,并通过邮件定时发送给自己查看。目录: 1.爬取微博热搜 2.邮件发送 3.爬取天气预报 4.综合程序 爬取微博热搜 我这里使用Python的正则表达...
  • python爬取微博热搜

    2021-02-10 16:59:16
    为了对 BeautifulSoup库进行测试,简单实现了微博热搜与百度新闻网页词条与链接的爬取,完整代码在GitHub 依赖库安装 pip3 install beautifulsoup4 pip install urllib3 爬取微博热搜代码 # 抓取微博热搜词条信息 ...
  • 一个微博热搜引发的故事

    万次阅读 多人点赞 2020-03-31 15:35:01
    一个微博热搜引发的故事一、故事从这里开始二、搞事情第一步:搜集图片三、搞事情第二步:展示图片四、搞事情第三步:展示图片五、搞事情第四步:统计分析1.数据处理2.数据筛选3.统计各天的频率4.统计星座的频率5....
  • 所上传的资源是python编写的微博热搜信息爬取项目,内含源代码+sql脚本,另外还对过程中可能出现的问题进行了汇总,对于正在学习这方面的你是一个很好的选择,希望对你有所帮助。
  • 我们此次通过爬取2019年2W+条热搜数据,包括内容以及搜索指数,为大家揭开微博热搜2019的诸多秘密,一起利用数据“硬核吃瓜”,包括:2019微博热搜最大的瓜,微博程序员集体加班的日子,微博热搜的常客,热搜里的...
  • 微博热搜爬取生成词云
  • 基于PHP爬虫的微博热搜实时监控平台

    万次阅读 多人点赞 2020-04-12 03:04:02
    基于PHP爬虫的微博热搜实时监控平台背景一、整体思路二、数据爬取1....返回数据三、数据可视化1.画柱状图2.ajax请求数据四、效果展示写在最后 背景 ...重点是,当我去搜微博热搜的时候,是这样的: 界...
  • 一、爬取微博热搜关键词需要的第三方库,下面就给大家详细介绍下用代理IP爬取微博热搜关键词: 1、requests 2、BeautifulSoup 美味汤 3、worldcloud 词云 4、jieba 中文分词 5、matplotlib 绘图 二、爬取微博热搜...
  • Api-微博热搜榜免费接口 微博热搜分析监测工具, 每分钟更新,如果需要更多时间的参数请通过接口获取。查看微博热搜数据监测接口 。 接口简介: 可以实时的关注社会的热点新闻和热点人物,更有热点近期搜索量波动...
  • 微博趋势热搜 微博热搜榜,记录从2020-11-24日开始的微博热门搜索。每小时抓取一次数据,按天。 相关项目 今日热门搜索 历史归档 执照 的许可证使用MIT许可证发布。具体内容请查看文件。
  • 微博热搜数据下载

    2020-06-23 22:22:42
    最近几天一直想找微博热搜数据,今天找了好久,终于找到了一个免费能下的了。 虽然数据的事件跨度只有几个月,但已经够用了。存档一下这个网站,备用。 http://www.silas.site/article_category.php?id=4 ...
  • 今天收拾自己以前的代码,看到了很久之前写的一个抓取微博热搜的代码,最起码的两年了,然后跑了一下,居然还行,只不过并不是理想,数据上有些偏差,但是能用。功能就是每1分钟抓取一次,然后写到日志中。 #! /bin/...
  • 【Python爬虫】单线程爬取微博热搜 最近有很多小伙伴们都天天在微博上吃到各种不少的瓜吧,一打开微博热搜榜就是当下的热点头条。那么我们怎么用程序来爬取微博热搜的内容呢? 今天我就来教会大家怎么用爬虫爬取微博...
  • Q:想要记录实时的微博热搜分析某一类事件的热度怎么办? A: 采用python爬虫24小时不间断爬取微博热搜并存储到本地。 代码如下: # -*- coding: utf-8 -*- """ Created on Thu Mar 18 14:48:24 2021 @author: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,815
精华内容 5,526
关键字:

微博热搜