首页 > 编程语言 >GB标准文档爬虫下载程序

GB标准文档爬虫下载程序

时间:2024-04-11 12:14:13浏览次数:30  
标签:name url res 爬虫 print html 文档 GB download

"""
author:babyfengfjx
"""
import requests
import re
from time import sleep
from bs4 import BeautifulSoup
import shelve
headers = {
  "Accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8",
  # "Accept-Encoding": "gzip, deflate, br, zstd",
  "Accept-Language": "zh-CN,zh;q=0.9",
  "Connection": "keep-alive",
  "Cookie": "HMACCOUNT_BFESS=D1D8258E03E0A558; BDUSS_BFESS=dKNzJKaFhQQWFvcEpSZG9oRE5YR0Zod1l-VHE3ZVFLfnJTZWNJT3JKbGdiT3BsRVFBQUFBJCQAAAAAAAAAAAEAAAB~qcIBZmxvd2ludGhlcml2ZXIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGDfwmVg38JlMT; H_WISE_SIDS_BFESS=40008_40206_40212_40215_40080_40364_40352_40367_40374_40401_40311_40301_40467_40461_40471_40456_40317; BAIDUID_BFESS=A6E2AF276F85EFFB50804B65078FB44D:FG=1; ZFY=hyR2bKIUFoz76hVFPIVRUUHYScV4SOFL0yQP0ASJu4k:C",
  # "Host": "hm.baidu.com",
  "Referer": "https://0ppt.com/",
  # "Sec-Ch-Ua": "\"Chromium\";v=\"124\", \"Microsoft Edge\";v=\"124\", \"Not-A.Brand\";v=\"99\"",
  # "Sec-Ch-Ua-Mobile": "?0",
  # "Sec-Ch-Ua-Platform": "\"Windows\"",
  # "Sec-Fetch-Dest": "image",
  # "Sec-Fetch-Mode": "no-cors",
  # "Sec-Fetch-Site": "cross-site",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0"
}
def getcontent_list(html):
    # https://0ppt.com/bz/index_927.html

    res = requests.get(html,headers=headers)
    res.encoding = 'GBK'
    html_content= res.text

    # print(html_content)

    repat = re.compile(r'<a href="(https.+?)".*?title="(.*?)">.*?</a>')
    repat1 = re.compile(r'<a href="(https.+?)".*?target="_blank">(.*?)</a>')
    result = repat.findall(html_content)
    result1 = repat1.findall(html_content)
    return result + result1

def downloadfiles(fileinfo):
    url = fileinfo[0]
    name = fileinfo[1]
    download_url_info = requests.get(url,headers=headers).text
    # print(download_url_info)
    repat = re.compile(r'<a href="(https.*?)" target="_blank" rel="nofollow" '
                       r'class="bz-down-button">在线预览</a>')
    download_url = repat.findall(download_url_info)
    name = name.replace('/','-').replace('∕','-').replace(':', '-').replace('*','-')   # 这里因为/在windows下不能用作文件名,所以替换掉

    return  download_url[0],name

def download_file(url,name):
    with shelve.open('download_list') as f:
        if url in f:
            # print(f'{name}》已经下载过')
            return
    print(f'{name}--开始下载》{url}')
    res = requests.get(url,headers=headers,stream=True)
    if res.status_code == 200:

        with open(f'{name}.pdf','wb') as f:
            for chunk in res.iter_content(chunk_size=16384):  #16384就是16k
                f.write(chunk)
            print(f'{name}下载完成')
            with shelve.open('download_list') as f:
                f[url] = name
    else:
        print(f'{name}下载失败')

if __name__ == '__main__':
    for base_page in range(45,928):
        htmlbase = f'https://0ppt.com/bz/index_{base_page}.html'
        print(f"当前访问页面:{htmlbase}")
        res = getcontent_list(htmlbase)
        # print(res)
        for i in res:
            # print(i)
            # if "软件" in i[1]:
            download_url,name= downloadfiles(i)
            download_file(download_url,name)
            sleep(1)

标签:name,url,res,爬虫,print,html,文档,GB,download
From: https://www.cnblogs.com/babyfengfjx/p/18128743

相关文章

  • 【附源码】JAVA计算机毕业设计小型家政服务管理系统的设计与实现(源码+mysql+文档)
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着社会的快速发展和人们生活节奏的加快,家政服务行业应运而生,并迅速发展壮大。越来越多的家庭开始聘请家政人员来帮助处理家庭日常事务,如清洁、烹饪、......
  • 超大容量 | 瑞芯微RK3588J工业核心板新增16GB DDR + 128GB eMMC配置!
    作为瑞芯微的金牌合作伙伴,创龙科技在2023年9月即推出搭载瑞芯微旗舰级处理器RK3588J的全国产工业核心板——SOM-TL3588。 SOM-TL3588工业核心板是基于瑞芯微RK3588J/RK3588高性能处理器设计的四核ARMCortex-A76+四核ARMCortex-A55全国产工业核心板,Cortex-A76核心主频高达2.......
  • 京东一面:如何在SpringBoot启动时执行特定代码?有哪些方式?
    引言SpringBoot提供了许多便捷的功能和特性,使得开发者可以更加轻松地构建强大、高效的应用程序。然而,在应用程序启动时执行一些初始化操作是至关重要的,它可以确保应用程序在启动后处于预期的状态,从而提供更好的用户体验和稳定性。在应用程序启动时执行初始化操作有许多好处。......
  • 使用docker部署基于selenium和chrome-headless的爬虫
    使用docker部署基于selenium和chrome-headless的爬虫无论是测试还是爬虫的一些工作,有时候都会用到selenium去对chrome执行自动化操作,这里介绍一下如何使用docker快捷方便的部署相关应用。1.selenium+chrome镜像通过dockersearchselenium我们发现,有一个docker镜像叫做sele......
  • 毕业设计3020微信小程序-图书馆图书借阅预览预约管理软件【源代码+文档+调试+讲解视频
    摘要本文详细介绍了基于服务器与客户端模式的图书馆图书借阅预览预约管理软件的设计与实现过程。服务器端具备学生管理、图书管理、自习室管理、自习室预约管理、图书借阅管理以及系统管理等功能,而客户端则为用户提供注册登录、首页浏览、图书借阅、自习室预约以及个人信息......
  • 毕设作品案例-基于JAVA-SSM实现-微信小程序-校园电商商城系统-附源码+LW(文档+PPT)+示例
    目录概要小程序开发说明研究背景系统功能分析系统功能的具体实现(项目展示)小程序端-前台功能模块后台管理员功能模块管理员功能模块源码获取概要本文论述了微信小程序的校园商铺系统的设计和实现,该系统从实际运用的角度出发,运用了计算机系统设计、数据库等相关知识......
  • 基于SpringBoot+Vue的4S店车辆管理系统(源码+文档+部署+讲解)
    一.系统概述随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代,4S店车辆系统就是信息时代变革中的产物之一。任何系统都要遵循系......
  • springboot中实现异步方法
    开启配置线程池packageorg.springblade.auth.config;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.scheduling.annotation.EnableAsync;importorg.springframework.sch......
  • 前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)
    前后端分离开发和接口文档管理平台YAPI以及前端工程化(Vue-cli)前后端分离开发需求分析=>接口定义(API接口文档)=>前后端并行开发(遵守规范)=>测试(前端、后端)=>前后端联调测试YApi1.介绍:YApi是高效、易用、功能强大的api管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服......
  • SpringBoot中application.yml引入多个YML文件
    系列文章目录文章目录系列文章目录前言前言前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。首先,你要了解SpringBoot配置文件加载顺序,加载位置(代码内,Nacos等),当然这......