31. 实战:PyQuery获取小电视Top100详细信息(文末源码)

news2024/11/28 3:50:36

目录

前言                (链接放在评论区)(链接放在评论区)(链接放在评论区)

目的                (链接放在评论区)(链接放在评论区)(链接放在评论区)

思路                (链接放在评论区)(链接放在评论区)(链接放在评论区)

代码实现

1. 用 openpyxl 库便捷创建 xlsx 文件用于保存信息

2. 伪装请求头,访问目标 URL

3. 请求文本传入PyQuery进行初始化

4. 遍历 rank-list 的 li 节点,拿取每一条的详细信息

5. 写入文件

完整代码

运行效果

总结


前言

上一节我们学习了PyQuery的语法,这节进行实战,抓取某站(链接放在评论区)的热搜排行榜作为练手。

涉及的库:openpyxl  requests  (logging)  PyQuery


目的

抓取小电视热搜排行榜的详细信息(包括全站排行榜Top100的排名、视频主题、链接、播放量、弹幕量以及UP主名)并另存到文件(链接放在评论区)


思路

1. 用 openpyxl 库便捷创建 xlsx 文件用于保存信息

2. 伪装请求头,访问目标 URL

3. 请求文本传入PyQuery进行初始化

4. 遍历 rank-list 的 li 节点,拿取每一条的详细信息

5. 写入文件


代码实现

1. 用 openpyxl 库便捷创建 xlsx 文件用于保存信息

导包

from pyquery import PyQuery as pq
import requests
import logging
import openpyxl

初始化工作表

wb = openpyxl.Workbook()  # 初始化工作簿对象
sheet = wb.active  # 获取活动的工作表
# 添加列名
sheet.append(['rank', 'title', 'link', 'bicon_play', 'bicon_barrage', 'creator'])
# 日志输出配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')

这里还添加了一行日志输出的配置,可以在控制台显示录入了什么信息,便于我们快速纠错。

2. 伪装请求头,访问目标 URL

# 伪装请求头
headers = {
    "Origin": "见评论区",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
}
# 目标URL
url = '见评论区'
resp = requests.get(url, headers=headers).text

3. 请求文本传入PyQuery进行初始化

# request请求获取的文本传入PyQuery初始化
doc = pq(resp)

4. 遍历 rank-list 的 li 节点,拿取每一条的详细信息

(通过观察页面源代码发现的,不熟悉的小伙伴移步专栏以前发布过的实战文章)

给一个比较详细的案例吧:传送门

# 获取class=rank-list 下所有li节点内容
# 遍历li节点
con1 = doc('.rank-list li')
for item in con1.items():
    rank = item('.num').text()  # 排名
    title = item('.content .info a:first-child').text()  # 视频标题
    link = 'https:' + item('.content .info a').attr('href')  # 视频链接
    # creator = item('.content .info .detail a span').text()        # UP主
    creator, bicon_play, bicon_barrage = item('.content .info .detail span').text().split(' ')

5. 写入文件

    sheet.append([rank, title, link, bicon_play, bicon_barrage, creator])
    logging.info([rank, title, link, bicon_play, bicon_barrage, creator])

wb.save(filename='11_Rank_data.xlsx')

添加行,输出日志。


完整代码

# Created at UESTC
# Author: Vector Kun
# Time: 2023/1/25 14:32

from pyquery import PyQuery as pq
import requests
import logging
import openpyxl

wb = openpyxl.Workbook()  # 初始化工作簿对象
sheet = wb.active  # 获取活动的工作表
# 添加列名
sheet.append(['rank', 'title', 'link', 'bicon_play', 'bicon_barrage', 'creator'])
# 日志输出配置
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
# 伪装请求头
headers = {
    "Origin": "见评论区",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"
}
# 目标URL
url = '见评论区'
# request请求获取的文本传入PyQuery初始化
resp = requests.get(url, headers=headers).text
doc = pq(resp)
# 获取class=rank-list 下所有li节点内容
# 遍历li节点
con1 = doc('.rank-list li')
for item in con1.items():
    rank = item('.num').text()  # 排名
    title = item('.content .info a:first-child').text()  # 视频标题
    link = 'https:' + item('.content .info a').attr('href')  # 视频链接
    # creator = item('.content .info .detail a span').text()        # UP主
    creator, bicon_play, bicon_barrage = item('.content .info .detail span').text().split(' ')
    # print(bicon_play, bicon_view, creator)     # 排名
    sheet.append([rank, title, link, bicon_play, bicon_barrage, creator])
    logging.info([rank, title, link, bicon_play, bicon_barrage, creator])

wb.save(filename='11_Rank_data.xlsx')

运行效果

可以看到成功在控制台输出了日志信息并且将全站排行榜Top100的排名、视频主题、链接、播放量、弹幕量以及UP主名输入到了xlsx文件中。 


总结

本节我们对PyQuery进行了实战,实现了抓取某站全站排行榜Top100的详细信息。

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

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

相关文章

趣味三角——第4章——三角学迈向解析化

第4章 三角学迈向解析化(或分析化) 目录 4.1 三角学迈向解析化的过程简述 4.2 Franois Vieter对三角学解析化的贡献 “Thus the analysis of angular sections involves geometric and arithmetic secrets which hitherto have been penetrated by no one(因此&#xf…

Idea中指定xml文件失效

目录一、🐇 项目场景:二、🐇 问题描述三、🐇 原因分析:四、🐇 解决方案:一、🐇 项目场景: 最近狮子在搞一个项目,需要用到数据库多表查询,所以在…

数据挖掘,计算机网络、操作系统刷题笔记35

数据挖掘,计算机网络、操作系统刷题笔记35 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,orac…

【论文翻译】Jointformer :一种基于误差预测和改进的三维人体姿态估计的单帧提升变压器

摘要 单目三维人体姿态估计技术有望极大地提高人体运动数据的可用性。表现最好的单幅图像2D3D提升模型使用图卷积网络(GCNs),通常需要一些手动输入来定义不同身体关节之间的关系。我们提出了一种新的基于变压器的方法,该方法使用更广泛的自我注意机制来…

nodejs+vue高校网上报名系统

本课题利用nodejsVue设计实现网上报名系统。系统的主要功能是:用户在线注册信息之后,利用注册时填写的用户账号与密码,登入系统后,对注册的个人信息进行修改,在线报名,能正确的提交有送报考的基本信息&…

【图卷积网络】01-卷积神经网络:从欧氏空间到非欧氏空间

人工神经网络发展浪潮 第三次浪潮——卷积神经网络 加拿大多伦多大学教授,机器学习领域泰斗Geoffery Hinton及其学生在《科学》上发表了一篇论文 (Hinton, G. E . Reducing the Dimensionality of Data with Neural Networks[J]. Science, 2006, 313(578…

【Typescript学习】使用 React 和 TypeScript 构建web应用(二)部分UI、useState、useRef、Props

教程来自freecodeCamp:【英字】使用 React 和 TypeScript 构建应用程序 跟做,仅记录用 其他资料:https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide/ 第二天 以下是视频(0:18-0:40) 的内容 目录第二天1 App 函数…

【二叉树】java实现代码,详解二叉树,带大家更深刻的掌握二叉树递归思想

前言: 大家好,我是良辰丫🪐🪐🪐,在探索数据结构的旅程中,二叉树可以说是数据结构中的重点,笔试面试经常出现的问题,同时也是难点。🐥🐥&#x1f4…

【Java开发】Spring Cloud 09 :微服务网关 Gateway

Spring Cloud Gateway(简称 Gateway),它在微服务架构中扮演的角色是“微服务网关”,Nginx 和 Gateway 在微服务体系中的分工是不一样的。Gateway 作为更底层的微服务网关,通常是作为外部 Nginx 网关和内部微服务系统之…

Markdown编辑器基本语法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

【C语言从0到1之文件操作(FILE)】(原理 画图 举例 不信教不会你 不要放收藏夹落灰 学起来好嘛)

🕺作者:迷茫的启明星 🎃专栏:《数据库》《C语言从0到1专栏》《数据结构》《C语言杂谈》🏇分享喜欢的一句话:心如花木,向阳而生前言在我们的学习中,文件操作是被我们忽略,…

NodeJS 与第三方模块 mysql(基本操作)

文章目录参考描述mysql 模块连接数据库检测基本操作查询数据与代码分离原则占位符插入另一种姿态修改另一种姿态删除标记删除参考 项目描述哔哩哔哩黑马程序员搜索引擎Bing 描述 项目描述NodeJSv18.13.0nodemon2.0.20MySQL5.7.40mysql2.18.1 mysql 模块 npm(Node…

Linux——进程

目录 冯诺依曼体系结构 操作系统(Operator System) 概念 设计OS的目的 定位 如何理解 "管理" 总结 系统调用和库函数概念 承上启下 进程 基本概念 描述进程-PCB task_struct-PCB的一种 task_ struct内容分类 组织进程 查看进程 通过系统调用获取进程…

Pycharm使用Git进行版本控制(自建远端Git仓库)

目录本地Git安装远端Git仓库搭建在Pycharm中使用Git进行版本控制设置Git可执行文件路径创建本地Git仓库设置远端Git仓库提交及推送本地Git安装 安装本地Git用于被Pycharm调用,安装方法参考以下博客: Git 的下载与安装_作者:fengzhx0820 远端…

四轮两驱小车(四):STM32驱动5路灰度传感器PID循迹

目录 前言: 小车效果展示: 5路数字灰度传感器: 巡线思路: 加入PID调节的代码: 前言: 之前买了一批5路灰度传感器,想用这传感器进行循迹,无奈网上和官方的资料提供的还是比较少&a…

ARM X210 官方 uboot 配置编译实践

一、X210官方uboot配置编译实践1 1. 找到官方移植好的 uboot(BSP 概念) (1) 源头的源代码是 uboot 官网下载的。这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的 SoC 对应的移植版本。 (2) SoC 厂商在推出一…

分享145个ASP源码,总有一款适合您

ASP源码 分享145个ASP源码,总有一款适合您 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下..., 145个ASP源码下载链接:https://pan.baidu.com/s/1gxm3rFFLu8pUhVncQga6-g?pwd7n85 提取码&#x…

HJ56、HJ58、JZ4、JZ6、JZ15、JZ17几道题

文章目录HJ56 完全数计算题目描述:具体实现:HJ58 输入n个整数,输出其中最小的k个题目描述:具体实现:JZ4 二维数组中的查找题目描述:具体实现:JZ6 从尾到头打印链表题目描述:具体实现…

springboot文件上传,单文件上传和多文件上传,以及数据遍历和回显

springboot文件上传&#xff0c;单文件上传和多文件上传项目结构及pom.xml创建文件表单页面编写javabean编写controller映射MultipartFile类RequestPart注解controller代码application.properties中的文件上传配置遍历数据显示页面运行显示项目结构及pom.xml pom.xml: <dep…

SQL用法详解补充

本文是对上次“SQL用法详解”的一些补充&#xff0c;一些基本操作可以点击链接查看 目录 一.对表结构的常用操作 查看表结构格式 修改表结构格式 1.修改列名和类型 2.修改添加列 3.修改表删除列 4.修改表名 5.数据删除 二.总结 三.实例 解决 完整代码 一.对表结构的常用操…