当前位置: 首页 > news >正文

ChatGPT辅助编程,一次有益的尝试

 如果大家想学习PCIe,搜索网上的信息,大概率会看到chinaaet上Felix的PCIe扫盲系列的博文

Felix-PCIe扫盲

每次看这个系列博文的时候,我都在想有没有什么方法可以把这个系列的博文都保存到一个pdf文件中,这样方便阅读。于是有了下面使用ChatGPT进行辅助编程的内容:

我是使用知乎上的引用Felix博文网页为根开始工作的:

PCIe扫盲系列博文

下面的链接是我和ChatGPT对话的详细内容: 

Convert webpage to PDF.icon-default.png?t=N7T8https://chat.openai.com/share/812bae9d-76bb-4701-8379-cd200aa45ad0

生成的可用python代码如下: 

import requests
from bs4 import BeautifulSoup
import re
from urllib.parse import unquote
import pdfkit
from PyPDF2 import PdfMergerurl = "https://zhuanlan.zhihu.com/p/655702770"# 发送GET请求并获取页面内容
response = requests.get(url)
html_content = response.text# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_content, 'html.parser')# 提取所有的超链接
links = soup.find_all('a', href=True)
target_regex = re.compile(r'target=(.+)')target_html = []# 输出所有链接
for link in links:# 获取原始的 href 属性raw_href = link['href']# 使用 unquote 处理 URL 编码decoded_href = unquote(raw_href)match = target_regex.search(decoded_href)if match:target_content = match.group(1)print(target_content)target_html.append(target_content)config = pdfkit.configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf')output_pdf_path = "output.pdf"# Create a PDF merger object
pdf_merger = PdfMerger()# Generate PDFs and add them to the merger
for i, target_url in enumerate(target_html):pdf_file_path = f"output_{i}.pdf"pdfkit.from_url(target_url, pdf_file_path, configuration=config)pdf_merger.append(pdf_file_path)# Write the combined PDF to the output file
with open(output_pdf_path, 'wb') as output_pdf:pdf_merger.write(output_pdf)print(f"Combined PDF saved to {output_pdf_path}")

相关文章:

  • Ubuntu文件系统结构
  • 【第三十五节】idea项目的创建以及setting和Project Structure的设置
  • 大语言模型微调数据集(2)
  • 水题中的稀奇古怪trick合集
  • 【VTKExamples::PolyData】第二十三期 InterpolateMeshOnGrid
  • SQL 注入 - http头注入之UA头注入探测
  • 海量数据处理商用短链接生成器平台 - 2
  • orin nx 安装paddlespeech记录
  • 2024年-视觉AI检测的面试题目总结
  • Java学习day30:Stream流入门、集合获取流对象、流对象的方法(知识点详解)
  • Vue3编写简单的App组件(二)
  • WebGPU Inter-stage 变量
  • Netty的序列化之MessagePack
  • sql求解连续两个以上的空座位
  • 堪称灾难级攻击的 UDP FLOOD洪水攻击,应该如何防护?
  • 【node学习】协程
  • AWS实战 - 利用IAM对S3做访问控制
  • Docker: 容器互访的三种方式
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Less 日常用法
  • Puppeteer:浏览器控制器
  • Selenium实战教程系列(二)---元素定位
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • Vue全家桶实现一个Web App
  • vue--为什么data属性必须是一个函数
  • Webpack 4 学习01(基础配置)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 动态魔术使用DBMS_SQL
  • 基于web的全景—— Pannellum小试
  • 记一次和乔布斯合作最难忘的经历
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 微信小程序开发问题汇总
  • 物联网链路协议
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​渐进式Web应用PWA的未来
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转) SpringBoot:使用spring-boot-devtools进行热部署以及不生效的问题解决
  • (转)关于多人操作数据的处理策略
  • .NET 分布式技术比较
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET与 java通用的3DES加密解密方法
  • .Net组件程序设计之线程、并发管理(一)
  • /var/spool/postfix/maildrop 下有大量文件
  • [ linux ] linux 命令英文全称及解释
  • [Apio2012]dispatching 左偏树
  • [Bugku]密码???[writeup]
  • [c#基础]值类型和引用类型的Equals,==的区别
  • [C++]AVL树怎么转
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总