行业标准信息pdf下载

查看 159|回复 11
作者:快乐的小萌新   
行业标准信息服务平台pdf下载
网址:aHR0cHMlM0EvL2hiYmEuc2FjaW5mby5vcmcuY24v
利用图片一张一张加载爬取
页面从0开始,到最后一页
需要安装 Pillow 库首先,
确保你已经安装了 Python。然后,你可以使用pip命令来安装 Pillow 库。
在命令行中输入以下命令:pip install pillow


image.png (324.59 KB, 下载次数: 0)
下载附件
2024-6-12 08:38 上传

需要箭头位置的那一串字符,填入代码的name里面


image.png (97.29 KB, 下载次数: 0)
下载附件
2024-6-12 08:46 上传



image.png (225.92 KB, 下载次数: 0)
下载附件
2024-6-12 08:47 上传


行业标准信息.zip
(1.75 KB, 下载次数: 20)
2024-6-12 08:41 上传
点击文件名下载附件
下载积分: 吾爱币 -1 CB

蓝奏云:https://xiaopu1314.lanzout.com/inbJS21lz4mb

黑体, 下载次数

txq0211   

之前也写了个,只是还在研究pyqt做界面,没分享,可以相互参考下。
[Python] 纯文本查看 复制代码import parsel
import requests
from PIL import Image
import os
import re
from PyPDF2 import PdfMerger
import json
# 下载图片
def download_image(url, filename):
    response = requests.get(url)
    with open(filename, 'wb') as file:
        file.write(response.content)
# 删除文件夹下所有文件
def delete_files_in_folder(folder_path):
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if os.path.isfile(file_path):
            os.remove(file_path)
# 删除文件夹
def remove_folder(path):
    if os.path.exists(path):
        if os.path.isfile(path) or os.path.islink(path):
            os.remove(path)
        else:
            for filename in os.listdir(path):
                remove_folder(os.path.join(path, filename))
            os.rmdir(path)
def trans_jpg2pdf(jpg_list: list) -> list:
    """jpg图片转换成pdf
    Args:
        jpg_list (list): 图片文件列表
    Returns:
        list: 图片转换后的pdf文件列表
    """
    pdf_list = []
    for jpg in jpg_list:
        jpg_path = os.path.join(images_dir, jpg)
        pdf_file = jpg.replace('.png', '.pdf')
        pdf_path = os.path.join(tmpdir, pdf_file)
        if os.path.exists(pdf_path):
            os.remove(pdf_path)
        pdf_list.append(pdf_path)
        im = Image.open(jpg_path)
        im.save(pdf_path, 'PDF', resolution=100.0)
    return pdf_list
def merge_pdf(pdf_list: list, result_pdf):
    """ 合并pdf文件
    Args:
        pdf_list (list): pdf文件列表
        result_pdf (str): 合并后的pdf文件名称
    """
    sorted_list = sorted(pdf_list, key=lambda x: int(re.search(r'\d+', x).group()))
    f_merger = PdfMerger()
    for pdf in sorted_list:
        f_merger.append(pdf)
    if os.path.exists(result_pdf):
        os.remove(result_pdf)
    f_merger.write(result_pdf)
def getUrl(url):
    response = requests.get(url)
    return response
def getPage(current,key):
    headers = {
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:126.0) Gecko/20100101 Firefox/126.0",
        "Content-Type": "application/x-www-form-urlencoded",
        "Referer": "https://hbba.sacinfo.org.cn/stdList",
    }
    url = "https://hbba.sacinfo.org.cn/stdQueryList"
    data = {
        "current": f"{current}",
        "size": "100",
        "key": f"{key}",
        "status": "现行"
    }
    response = requests.post(url, headers=headers, data=data)
    return response
if __name__ == '__main__':
    images_dir = "images"
    if not os.path.exists(images_dir):
        # 如果不存在,创建目录
        os.mkdir(images_dir)
    keyword = input('请输入搜索关键词:')
    getJson = json.loads(getPage(1, keyword).text)
    pages = getJson["pages"]
    records = getJson["records"]
    i = 0
    for record in records:
        i = i + 1
        chName = record["chName"]
        code = record["code"]
        print(f'{i} 《{chName}》{code}')
    getNum = int(input('请输入序号:')) - 1
    getId = records[getNum]["pk"]
    chName = records[getNum]["chName"]
    code = records[getNum]["code"].replace('/',' ')
    titleUrl = f'https://hbba.sacinfo.org.cn/stdDetail/{getId}'
    selector = parsel.Selector(getUrl(titleUrl).text)
    title = f'《{chName}》{code}'
    url = 'https://hbba.sacinfo.org.cn/' + selector.css('h4 a::attr(href)').get()
    if url:
        html = getUrl(url).text
        numbers = re.findall(r'parseInt\(\'\d+\'\),', html)[0]
        number = re.findall(r'\d+', numbers)[0]
        key = url.split('/')[-1]
        for i in range(int(number)):
            pngUrl = f'https://hbba.sacinfo.org.cn/hbba_onlineRead_page/{key}/{i}.png'
            # 下载并保存图片
            filename = os.path.basename(pngUrl)
            download_image(pngUrl, f'images/{filename}')
            print(f'已缓存第{i}页')
        tmpdir = "temp"
        if not os.path.exists(tmpdir):
            # 如果不存在,创建目录
            os.mkdir(tmpdir)
        jpg_list = [f for f in os.listdir(images_dir) if f.endswith(".png")]
        pdf_list = trans_jpg2pdf(jpg_list)
        merge_pdf(pdf_list, f"{title}.pdf")
        print(f'已保存{title}.pdf')
        remove_folder(images_dir)
        remove_folder(tmpdir)
        print(f'已清理缓存页面')
    else:
        print('版权原因不公开,无法下载!')
lamorn   


快乐的小萌新 发表于 2024-6-12 09:14
羡慕你们有渠道,哈哈哈,我就当个爱好算了

主要是有信息差,而且我也会带着专家去指导,资料是在咸鱼19买的,还有自己整理的。。但是人家很认可,主要是我们请的是真专家,他们请教一些问题就能减少非常多的损失,而且也和专家建立联系了,平时也能免费问问题,可能一句话就能减少几十万的损失,他们还是不亏的。
BoyInTheSun   

强的
可惜需要的人大概率找不到甚至不会用,花钱找人搞,然后他们再二道贩子空手套白狼
快乐的小萌新
OP
  


BoyInTheSun 发表于 2024-6-12 08:50
强的
可惜需要的人大概率找不到甚至不会用,花钱找人搞,然后他们再二道贩子空手套白狼

这个没办法,我也想接这些简单的业务,也找不到
BoyInTheSun   


快乐的小萌新 发表于 2024-6-12 08:51
这个没办法,我也想接这些简单的业务,也找不到

之前我爬了国家标准的,全站资源下载,结账我到手才四百
小kgg   

只能说lz牛逼。。国标平台的国标好整。。这个行标还真不好整下来。。
youseitei   

很有用,感谢分享。
快乐的小萌新
OP
  


小kgg 发表于 2024-6-12 08:53
只能说lz牛逼。。国标平台的国标好整。。这个行标还真不好整下来。。

这个很简单啊,就是一张张图片下载,最后转换成pdf,都没加密的
快乐的小萌新
OP
  


BoyInTheSun 发表于 2024-6-12 08:53
之前我爬了国家标准的,全站资源下载,结账我到手才四百

我爬那个基金的80多万条数据,代码都跑了两天,结果别人不要了,开始要的只是200
您需要登录后才可以回帖 登录 | 立即注册

返回顶部