吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 808|回复: 7
收起左侧

[学习记录] python:湖南日报pdf下载合并代码

  [复制链接]
zjg121 发表于 2024-4-17 10:16
输入8位数字的日期,可以下载各个版面的pdf,最后合成一个pdf文件。
[Python] 纯文本查看 复制代码
import os
import shutil
import requests
from PyPDF2 import PdfMerger


# 函数:从URL下载PDF文件
def download_pdf_from_url(url, filename, i):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110'
    }
    response = requests.get(url, stream=True, headers=headers)
    if response.status_code == 200:
        print(i, end=' ')
        with open(filename, 'wb') as f:
            for chunk in response.iter_content(1024):
                if chunk:  # 确保只写入非空内容
                    f.write(chunk)
    else:
        print('.', end='')
        # print(f"Failed to download PDF. Status code: {response.status_code}")


# 函数:合并文件夹中的PDF文件
def merge_pdfs_in_folder(folder_path, output_filename):
    merger = PdfMerger()
    for filename in os.listdir(folder_path):
        if filename.endswith('.pdf'):
            file_path = os.path.join(folder_path, filename)
            merger.append(file_path)
    with open(output_filename, 'wb') as outfile:
        merger.write(outfile)
    merger.close()
    print(f"Merged PDF saved as {output_filename}")


# 主程序
def main():
    # 用户输入日期
    date_input = input('请输入形如20240417这样的8位数日期:')
    if not date_input.isdigit() or len(date_input) != 8:
        print("输入的日期格式不正确,请确保是8位数的数字!")
        return

    # 创建下载文件夹
    pdf_folder = 'd:/hnrb/temp'
    os.makedirs(pdf_folder, exist_ok=True)

    # 解析日期
    year_month = f'{date_input[:4]}-{date_input[4:6]}'
    day = f'{date_input[6:8]}'

    # 下载PDF文件
    for i in range(1, 99):
        ban = f'{i:02d}'  # 使用格式化字符串确保两位数
        pdf_url = f'https://hnrb.voc.com.cn/hnrb_epaper/images/{year_month}/{day}/{ban}/{date_input}{ban}_pdf.pdf'
        pdf_filename = os.path.join(pdf_folder, f'pdf_{date_input}{ban}.pdf')
        try:
            download_pdf_from_url(pdf_url, pdf_filename, i)
        except Exception as e:
            print(f"Failed to download {pdf_filename}: {e}")
    print()
    # 合并PDF文件
    output_pdf_filename = f'd:/hnrb/hnrb_{date_input}.pdf'
    merge_pdfs_in_folder(pdf_folder, output_pdf_filename)

    # 删除下载文件夹
    shutil.rmtree(pdf_folder)
    print('任务完成!')


# 执行主程序
if __name__ == '__main__':
    main()

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
Quincy379 + 1 + 1 谢谢@Thanks!
shengruqing + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lfmwxy 发表于 2024-4-17 10:22
开始学习python
Trojians 发表于 2024-4-17 11:22
已经使用上了,需要PyPDF2,很棒,是否可以加一个下载进度?
大器晚成0125 发表于 2024-4-17 13:50
keenshin 发表于 2024-4-17 14:42
可以的666
zzqiang97 发表于 2024-4-17 14:55
学习一下
yysyWang 发表于 2024-4-17 16:46
网站地址发一个
 楼主| zjg121 发表于 2024-4-17 17:37

https://epaper.voc.com.cn/hnrb/html/2024-04/17/node_201.htm
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 14:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表