python爬虫实战(2)--爬取某博热搜数据

news2024/11/25 0:50:09

1. 准备工作

使用python语言可以快速实现,调用BeautifulSoup包里面的方法
安装BeautifulSoup

pip install BeautifulSoup

完成以后引入项目

2. 开发

定义url

    url = 'https://s.微博.com/top/summary?cate=realtimehot'

定义请求头,微博请求数据需要cookie,设置自己的cookie

header = {
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',
    'Host': 's.weibo.com',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh-Hans;q=0.9',
    'Accept-Encoding': 'gzip, deflate, br',
    # 定期更换Cookie
    'Cookie': '你的cookie'
}

cookie查看
在这里插入图片描述
分析数据结构,找到标签值

    items = soup.find('section', {'class': 'list'})

爬取的数据都是列表,定义好需要的列表list,循环标签值

 href_list = []
    text_list = []
    order_list = []
    type_list = []
    view_count_list = []
    for li in items.find_all('li'):
        # 链接地址
        order = li.find('strong')
        if order == None:
            continue
        href = li.find('a').get('href')
        href_list.append('https://s.weibo.com' + href)
        la = li.find('i')
        order_list.append(order.get_text())
        text = li.find('span').get_text()
        view_count = li.find('span').find('em').get_text()
        view_count_list.append(view_count)
        text1 = text.replace(view_count, '')
        text_list.append(text1)
        if la:
            type = trans_icon((la.get('class')[1]))
        else:
            type = trans_icon('')
        type_list.append(type)

中间有个热搜类别转换方法

def trans_icon(v_str):
    """转换热搜类别"""
    if v_str == 'icon_new':
        return '新'
    elif v_str == 'icon_hot':
        return '热'
    elif v_str == 'icon_boil':
        return '沸'
    elif v_str == 'icon_recommend':
        return '商'
    else:
        return '未知'

最后把抓取的数据存到xlsx


    df = pd.DataFrame(data)
    df.to_excel('C:\\Users\\Administrator\\Desktop\\微博热搜榜.xlsx', index=False)  # 保存结果数据

3. 效果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/856970.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows 环境下 Python3 离线安装 cryptography 失败

发布Flask Web项目时,报错缺少Cryptography,于是尝试重新安装该库,但本机没有网络,只支持手动离线安装,尝试了pip、setup.py两种方式安装,结果都报错。。最后使用将安装包拷贝至本机(在其他电脑上安装的sit…

java.lang.OutOfMemoryError- unable to create new native thread 问题排查

问题描述 最近连续两天大约凌晨3点,线上服务开始异常,出现OOM报错。且服务所在的物理机只能ping通,但是无法登录。报错信息如下: ERROR 04-12 03:01:43,930 [DefaultQuartzScheduler_Worker-3] JobRunShell[JobRunShell]:211 Jo…

交叉编译驱动和应用出现警告提示错误“cc1:all warnings being treated as errors”解决方法

最近新玩的rk3588的板子,编译驱动时出现了警告提示错误“cc1:all warnings being treated as errors”,导致编译失败,仔细看了一下,就是内部出现了一个警告,一个未使用的变量出现的警告,导致了驱动编译失败,但是如果这样其他驱动会不会也这样,然后就写了一个printk的de…

算法练习--链表相关

文章目录 合并两个有序链表删除排序链表中的重复元素 1删除排序链表中的重复元素 2环形链表1环形链表2相交链表反转链表 合并两个有序链表 将两个升序链表合并为一个新的 升序 链表并返回。 新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入&…

怎么改ip地址 如何更改电脑ip地址

在网络世界中,IP地址是一个重要的标识,它被用于识别和定位设备在互联网中的位置。尽管大多数用户在日常生活中不需要更改IP地址,但在某些特定情况下,可能需要进行IP地址的更改。接下来,我们将介绍一些常见的方法来改变…

从零开始学习 Java:简单易懂的入门指南之面向对象(九)

面向对象进阶 前情回顾1.1 如何定义类1.2 如何通过类创建对象1.3 封装1.3.1 封装的步骤1.3.2 封装的步骤实现 1.4 构造方法1.4.1 构造方法的作用1.4.2 构造方法的格式1.4.3 构造方法的应用 1.5 this关键字的作用1.5.1 this关键字的作用1.5.2 this关键字的应用1.5.2.1 用于普通的…

后端开发8.品牌模块

概述 简介 效果图 数据库设计 DROP TABLE IF EXISTS `goods_brand`;CREATE TABLE `goods_brand` ( `goodsBrandId` int(11) NOT NULL AUTO_IN

基于jeecg-boot的nbcio-boot因升级mybatis-plus到3.5.3.1和JSQLParser 到4.6而引起的在线报表配置报错处理

nbcio-boot因为升级mybatis-plus到3.5.3.1和JSQLParser 到4.6,引起的在线报表配置报错。 导致主页显示不出任务东西。 sql语句如下: select DATE_FORMAT(c.days, %Y%m) x, count(num) y from (select DATE_FORMAT(b.DEPLOY_TIME_, %Y-%m-%d) AS days , …

vue2传值方式总结 (十一种方法)

一.父传子传递 (1)在父组件的子组件标签上绑定一个属性,挂载要传输的变量 (2)在子组件中通过props来接受数据,props可以是数组也可以是对象,接受的数据可以直接使用 props: [“属性 名”] prop…

golang 自定义exporter - 服务连接数 portConnCount_exporter 导出器

需求: 1、计算当前6379 、3306 服务的连接数 2、可prometheus 语法查询 下面代码可直接使用: 注: 1、windows 与linux的区分 第38行代码 localAddr : fields[1] //windows为fields[1] , linux为fields[3] 2、如需求 增加/修改/删除…

【山河送书第六期】:《码上行动:零基础学会Python编程( ChatGPT版)》参与活动,送书两本!!

《码上行动:零基础学会Python编程( ChatGPT版》 前言内容提要本书亮点购买链接参与方式往期赠书回顾: 前言 在过去的 5 年里,Python 已经 3 次获得 TIOBE 指数年度大奖,这得益于数据科学和人工智能领域的发展,使得 Python 变得异…

Openlayers实战:多数据分散聚合

在飞机、轮船等地图显示的应用中,很多时候会用到数据聚合,Openlayers中提供了Cluster这个API ,他作为souce的一部分,设定distance值,如果2个点的间距小于 distance 所设置的数时,就会以聚合的方式显示。从而解决了数据淤积显示的状态,非常实用。 效果图 源代码 /* * @…

【基础IO】动静态库 {动静态库的创建和使用;动态库的加载;默认优先使用动态链接;为什么要有库;动态链接的优缺点;静态链接的优缺点;一些有趣的库}

动静态库 一、静态库(.a) 1.1 如何创建静态库? 编写源文件与头文件。注意:库的源文件没有main函数! 将所有的源文件编译生成目标文件。(如果只提供.h和.o给用户,用户也可以成功编译运行。但这样的做法太过麻烦,且容易…

8个值得收藏的在线3D建模工具

如今,许多设计师、艺术家和建筑师尝试学习进行 3D 建模来表达他们的想法。 但 3D 建模并不总是看起来那样。 我们所有人都很难找到合适的工具,尤其是在学习阶段。 但不要害怕! 你可以学习仅使用浏览器进行建模。 有许多基于浏览器的 3D 建模…

Scala(第六章 面向对象)

文章目录 6.1 Scala包 6.1.1 包的命名6.1.2 包说明(包语句)6.1.3 包对象6.1.4 导包说明 6.2 类和对象 6.2.1 定义类6.2.2 属性 6.3 封装 6.3.1 访问权限6.3.2 方法6.3.3 创建对象6.3.4 构造器6.3.5 构造器参数 6.4 继承与多态6.5 抽象类 6.5.1 抽象属性和…

实例034 直接在窗体上绘图

实例说明 含有Graphics对象的控件都能够在其上进行绘图,很多软件就是通过Graphics对象来美化程序的主界面,因为窗体中含有Graphics对象,所以可以将窗体看作一个大画板,一个可以在上面绘图的特殊控件。本例设计了一个简单的绘图软…

Pycharm 双击启动失败?

事故 双击 Pycharm 后,出现加载工程,我不想加载这个工程,就点击了弹出的 cancle 取消按钮。然后再到桌面双击 Pycharm 却发现无法启动了。哪怕以管理员权限运行也没用,就是不出界面。 原因未知 CtrlshiftESC 打开后台&#xff…

什么是埋阻埋容工艺?

PCB埋阻埋容工艺是一种在PCB板内部埋入电阻和电容的工艺。通常情况下,PCB上电阻和电容都是通过贴片技术直接焊接在板面上的,而埋阻埋容工艺则将电阻和电容嵌入到PCB板的内部层中,这种印制电路板,其自下而上依次包括第一介电层&…

uniapp支付宝微信支付功能实现

大纲: 具体实现逻辑如下: 页面初始化时,通过onLoad方法获取传入的钱包(wallet)信息。 用户输入充值金额,使用watch监听输入值的变化,并更新选中的充值金额选项。判断金额是否大于0,若是小于0,则…

【对于一维信号的匹配】对一个一维(时间)信号y使用自定义基B执行匹配追踪(MP)研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…