❤️爬虫截热榜长屏不方便阅读!推荐dominate直接生成报告❤️

本文主要是介绍❤️爬虫截热榜长屏不方便阅读!推荐dominate直接生成报告❤️,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之前学委之前写了一篇热榜长榜单爬虫截屏的文章和 快速优雅HTML报表开发

这次玩大一点,我们把热榜直接爬下来存为报告查看。

先看看效果:

在这里插入图片描述

搞起来!

第一步 生成报告

没听错,爬虫先放着,无中生有,随便搞点数据先把报告生成了。

保存下面代码为report.py,后面会用这个名字引入。

from dominate.tags import *"""
雷学委特制的生成html报告的函数
"""
def generate_html(tuples):_html = html()_head = head()_head.add(title("雷学委整理的CSDN热榜报告"))_head.add(meta(charset="utf-8"))_html.add(_head)_body = _html.add(body())_table = table(border=1)with _table.add(tbody()):index = 0for tp in tuples:index += 1leiXW = tr()leiXW += td(str(index))leiXW += td(a(tp[1],href=tp[0]))with _body.add(div(cls="leixuewei")):h3("雷学委整理的CSDN热榜")_body.add(_table)return _html.render()"""
雷学委特制的直接生成保存报告的函数
"""
def lei_report(leixuewei_tuples, path):data = generate_html(leixuewei_tuples)with open(path, "w") as f:f.write(data)if __name__ == "__main__":lxw_tuples = []lxw_tuples.append(("https://blog.csdn.net/geeklevin/article/details/119594295","雷学委Python生成Html报表"))lxw_tuples.append(("https://blog.csdn.net/geeklevin/article/details/116771659","Docker玩腻了,不妨试试用Vagrant"))path = "./csdn_rank.html"lei_report(lxw_tuples, path)

代码解析

上的代码生成一个html网页,并保存到path变量指定路径。

  1. 准备一个二元组的数组
  2. 传入generate_html函数,这个函数构建带head和body。其中body再迭代输入的数组,生成一个表格。
  3. 将表格内容输出写入到文件中

效果如下:

在这里插入图片描述

第二步改造之前的爬虫代码

也就是这篇热榜长榜单爬虫截屏的文章 里面的核心代码,下面直接改造。

'''
雷学委应对流式页面的爬虫解决秘诀
截屏的核心代码:
'''
def resolve_height(driver, pageh_factor=5):js = "return action=document.body.scrollHeight"height = 0page_height = driver.execute_script(js)ref_pageh = int(page_height * pageh_factor)step = 150 max_count = 15 count = 0 while count < max_count and height < page_height:#scroll down to page bottomfor i in range(height, ref_pageh, step):count+=1vh = islowjs='window.scrollTo(0, {})'.format(vh)print('[雷学委 Demo]exec js: %s' % slowjs)driver.execute_script(slowjs)sleep(0.3)if i >= ref_pageh- step:print('[雷学委 Demo]not fully read')breakheight = page_heightsleep(2)page_height = driver.execute_script(js)print("finish scroll")return page_height#获取窗口实际高度
page_height = resolve_height(driver)
print("[雷学委 Demo]page height : %s"%page_height)
sleep(5)
driver.execute_script('document.documentElement.scrollTop=0')
sleep(1)
driver.save_screenshot(img_path)
page_height = driver.execute_script('return document.documentElement.scrollHeight') # 页面高度
print("get accurate height : %s" % page_height)#上面的代码跟源自前一篇#引用报表功能
from report import lei_report#拉到页面底部
driver.execute_script(f'document.documentElement.scrollTop={page_height};')
sleep(1)
driver.save_screenshot(f'./leixuewei_rank_end.png')
blogs = driver.find_elements_by_xpath("//div[@class='hosetitem-title']/a")#生成数组
articles = []
for blog in blogs:link = blog.get_attribute("href")title = blog.textarticles.append((link,title))print('get %s articles' % len(articles))
print('articles : %s ' % str(articles))#给定路径,生成html报告
path = "./leixuewei_csdn_rank.html"
lei_report(articles, path)
print("保存热榜到路径:%s" %path)"""LeiXueWei Demo代码,白嫖这么多了,关注三连支持一下吧!"""

代码解析

前篇的流式处理的爬虫代码删去了截屏合并代码段。

然后,重点来了。如下步骤:

  1. 爬虫直接拉到底部,获取链接,生成数组
  2. 接着截图页面尾部,以后可以留作纪念
  3. 导入调用lei_report 函数,生成页面

比较简单的,不一行一行解读了。

效果如下:

报表太长了截图截了个头尾,看看。
在这里插入图片描述
在这里插入图片描述

总结:这篇多看看

本文仅作展示目的,对于演示网站有任何异议,请告知修改。

最后使用爬虫必须谨慎,不要当做儿戏去爬机构网站。你学习也不能拿严肃的网络来刷,这个行为会让你吃上LAO饭!

对了,学委还有这个可以关注长期阅读 =>雷学委趣味编程故事汇编
或者=> 雷学委NodeJS系列

持续学习持续开发,我是雷学委!
编程很有趣,关键是把技术搞透彻讲明白。
创作不易,请多多支持,点赞收藏支持学委吧!

这篇关于❤️爬虫截热榜长屏不方便阅读!推荐dominate直接生成报告❤️的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/207076

相关文章

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

Spring Boot集成SLF4j从基础到高级实践(最新推荐)

《SpringBoot集成SLF4j从基础到高级实践(最新推荐)》SLF4j(SimpleLoggingFacadeforJava)是一个日志门面(Facade),不是具体的日志实现,这篇文章主要介... 目录一、日志框架概述与SLF4j简介1.1 为什么需要日志框架1.2 主流日志框架对比1.3 SLF4

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Springboot实现推荐系统的协同过滤算法

《Springboot实现推荐系统的协同过滤算法》协同过滤算法是一种在推荐系统中广泛使用的算法,用于预测用户对物品(如商品、电影、音乐等)的偏好,从而实现个性化推荐,下面给大家介绍Springboot... 目录前言基本原理 算法分类 计算方法应用场景 代码实现 前言协同过滤算法(Collaborativ

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

MySQL中动态生成SQL语句去掉所有字段的空格的操作方法

《MySQL中动态生成SQL语句去掉所有字段的空格的操作方法》在数据库管理过程中,我们常常会遇到需要对表中字段进行清洗和整理的情况,本文将详细介绍如何在MySQL中动态生成SQL语句来去掉所有字段的空... 目录在mysql中动态生成SQL语句去掉所有字段的空格准备工作原理分析动态生成SQL语句在MySQL