import win32api

import win32con

import requests

from bs4 import BeautifulSoup

import webbrowser

import tkinter

from tkinter import filedialog

import pdfkit

# 预览

def take_body():

global url

global body_class

global headers

url = var_url.get()

body_class = var_body.get()

# 请求URL

headers = {

'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'Accept-Encoding':'gzip, deflate, br',

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'

}

r = requests.get(url,headers = headers)

soup = BeautifulSoup(r.content,'html.parser')

# 提取标题

global title

title = soup.title.text

# 判断该网站是否已下载转换过

f = open('temp.txt','r')

a = f.read()

dict = eval(a)

f.close()

if url.split('/')[2] in dict:

body_class = dict[url.split('/')[2]]

elif body_class == '':

win32api.MessageBox(0, '未从在该网站下载过文档,添加提取条件', '提示', win32con.MB_OK)

# 提取正文

if body_class != '':

body = soup.find_all(class_= body_class)[0]

# 对提取的内容,调用浏览器进行预览

html_test = str(body)

with open('html_test.html','wb')as f:

f.write(html_test.encode('utf-8'))

webbrowser.open('E:PythonHtmlToPdfHtmlToPdf_V0.7html_test.html',new=0,autoraise=True)

# html转pdf

def htmltopdf():

file_name = title + '.pdf'

types = [('pdf文件', '*.pdf')]

dest_dir = filedialog.asksaveasfilename(initialfile = file_name,filetypes = types)

options = {'encoding': 'utf-8'}

pdfkit.from_file('html_test.html', dest_dir, options=options)

dict = {}

f = open('temp.txt','r')

a = f.read()

dict = eval(a)

f.close()

dict[url.split('/')[2]] = body_class

f = open('temp.txt','w')

f.write(str(dict))

f.close()

# 创建窗口

root = tkinter.Tk()

root.title('HtmlToPdf')

root.geometry('300x200')

var_url = tkinter.StringVar()

var_body = tkinter.StringVar()

label_1 = tkinter.Label(root,text = 'URL:').place(x=10,y=10)

text_1 = tkinter.Entry(root,textvariable = var_url).place(x=100,y=10)

label_2 = tkinter.Label(root,text = '输入提取条件:').place(x=10,y=55)

text_2 = tkinter.Entry(root,show = None,textvariable = var_body).place(x=100,y=55)

button_2 = tkinter.Button(root,text = '预览',command = take_body).place(x=250,y=50)

label_3 = tkinter.Label(root,text = '是否打印:').place(x=10,y=100)

button_3 = tkinter.Button(root,text = '是',command = htmltopdf).place(x=100,y=95)

button_3 = tkinter.Button(root,text = '否',command = root.quit).place(x=130,y=95)

root.mainloop()

python下载网页上的pdf文件_利用Python把网页内容转换为pdf格式文件,批量下载到本地!...相关推荐

  1. python处理word或者pdf文件_利用python程序生成word和PDF文档的方法

    一.程序导出word文档的方法 将web/html内容导出为world文档,再java中有很多解决方案,比如使用Jacob.Apache POI.Java2Word.iText等各种方式,以及使用fr ...

  2. python脚本下载钉钉的文件_利用python下载钉钉群直播视频

    今年因为疫情的原因不能开学,所以很多学校都使用钉钉进行在线授课,但是在钉钉里面点击下载群直播回放的时候却发现: 真好,管理员设置了不允许下载回放. 这就完了吗?NoNoNo!既然正常途径下载不了,那么 ...

  3. python pdf报告_利用python设计PDF报告,jinja2,whtmltopdf,matplotlib,pandas

    转自:https://foofish.net/python-crawler-html2pdf.html 工具准备 弄清楚了网站的基本结构后就可以开始准备爬虫所依赖的工具包了.requests.beau ...

  4. python使用ttf文件_利用python工具生成彩色字体ttf

    之前研究过字体文件ttf的python脚本化生成方法,主要是利用fontforge的支持python脚本这一功能.现在最近手机市场上出现了几种彩色字体,这是怎么做到的呢?研究了一下,发现还是利用Pyt ...

  5. c++ 写入文件_利用Python把数据存储在csv文件中

    鼠年第一天开盘,很多股票跌停,太闹心了!今天再找点开心的事情做吧.人生最幸福的事情莫过于看到自己写的程序调试通过了! 前面我们介绍了,如何用Python做一个串口通讯的上位机.用这个上位机我们可以从E ...

  6. python关闭excel文件_利用Python读取和修改Excel文件(包括xls文件和xlsx文件)

    本文介绍一下使用Python对Excel文件的基本操作,包括使用xlrd模块读取excel文件,使用xlwt模块将数据写入excel文件,使用openpyxl模块读取写入和修改excel文件. 目录 ...

  7. python通过内置的什么函数打开一个文件_利用python进行文件操作

    这篇文章主要介绍了如何利用python进行文件操作,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 什么是文件 文件是系统存储区域的一个命名位置,用来存储一些信息,便于后续访问.能够在非 ...

  8. python用什么处理文件_利用Python如何快速处理文件

    利用Python如何快速处理文件 我之前要合并将近1000个CSV表格 每个表格共370列,约360行不等,列名相同 三个方案瞬间浮现在我眼前: 1.Ctrl C + Ctrl V--可以睡公司了: ...

  9. python分析pcap文件_利用Python库Scapy解析pcap文件的方法

    每次写博客都是源于纳闷,python解析pcap这么常用的例子网上竟然没有,全是一堆命令行执行的python,能用吗?玩呢? pip安装scapy,然后解析pcap: import scapy fro ...

  10. abaqus python 读取文件_利用Python修改Abaqus的inp文件(关键字)

    利用Python修改Abaqus的inp文件(关键字) Abaqus的关键字可以直接打开inp文件或者在Abaqus的key word里面直接修改,当然除了这个,还可以利用Python语言进行修改,也 ...

最新文章

  1. 快被系统性能逼疯了?你需要这份性能优化策略
  2. php获取svn文件,然后ftp上传服务器代码
  3. Floyd_Warshall POJ 1847 Tram
  4. retinajs 使用方法
  5. 阿里云发布ECS磁盘加密,一键加密,业务0改动
  6. mysql 代码执行时间_mysql 显示SQL语句执行时间的代码
  7. react销毁方法钩子0_React钩子:使用React状态的新方法
  8. linux 显示目录的大小不一样,linux目录大小显示不实时问题
  9. EXCEL电子档色环电阻计算器
  10. python、pygame开发的太空大战游戏源代码
  11. sudo报错:no valid sudoers sources found, quitting
  12. 计算机系统概述学后感,计算机操作系统学习心得体会总结(2)
  13. 学习笔记5(类和对象)
  14. 《你当像鸟飞往你的山》
  15. PYTHON实现批量下载淘宝详情页图片
  16. class中的static
  17. [网络安全设备——物理隔离设备2]物理隔离网闸常见概念问题解答
  18. SIM(Search-based user interest modeling)
  19. 仿iphone快速导航悬浮球
  20. AI模型各种存储格式文件介绍(pb, onnx, ckpt, tflite, h5)

热门文章

  1. 【Python自动化Excel】pandas处理Excel数据的基本流程
  2. java中将Excel转图片
  3. go技巧-json转map
  4. android.dig机器人采访,机器人学导论心得 - osc_jjc36t9p的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 药品信息管理系统php,医药行业信息化管理系统
  6. 阮一峰ES6学习-Symbol
  7. 马哥python培训如何
  8. 微信小程序如何使用视频组件
  9. 《Gradle实战》如何配置利用Maven本地仓库
  10. snownlp 原理_使用snownlp进行情感分析