爬虫下载网页文夹

爬虫下载网页pdf文件
在这里插入图片描述

import os
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
from urllib.parse import urljoin, unquote
from tqdm import tqdm
# 设置网页的URL
base_url = "http://119/download/dzz/pdf/"

# 创建保存文件的文件夹,如果文件夹不存在则创建
download_folder = "downloaded_pdfs"
os.makedirs(download_folder, exist_ok=True)

def get_name(base_url):
    name_list=[]
    # 获取网页内容
    response = requests.get(base_url)  # 发送请求获取网页内容
    response.raise_for_status()  # 检查请求是否成功,若不成功则抛出异常
    soup = BeautifulSoup(response.text, "html.parser")  # 解析HTML内容

    # 查找所有文件链接
    for link in soup.find_all("a"):  # 遍历网页中所有的<a>标签,找到每个链接
        name_list.append(link.get("href"))
    return name_list
f1_list=get_name(base_url)
for i1 in f1_list:
    if i1 and i1 not in ["../"]:
        print(i1)
        f1_url = urljoin(base_url, i1)  # 将相对链接转为完整的URL
        f2_list=get_name(f1_url)
        for i2 in f2_list:   
            if i2 and i2 not in ["../"]:
                f2_url = urljoin(f1_url, i2)  # 将相对链接转为完整的URL
                f3_list=get_name(f2_url)
                for i3 in tqdm(f3_list):   
                    if i3 and i3 not in ["../"]:
                        f3_url = urljoin(f2_url, i3)  # 将相对链接转为完整的URL
                        response = requests.get(f3_url)  # 发送请求获取网页内容
                        response.raise_for_status()  # 检查请求是否成功,若不成功则抛出异常
                        

                        file_response = requests.get(f3_url)  # 发送请求下载文件内容

                        download_folder_new = download_folder+'/'+i1+i2
                        download_folder_new=unquote(download_folder_new)
                        os.makedirs(download_folder_new, exist_ok=True)
                        download_folder_path=download_folder_new+i3
                        download_folder_path = unquote(download_folder_path)
                        with open(download_folder_path, "wb") as f:  # 以二进制写入方式保存文件
                            f.write(file_response.content)  # 写入下载的文件内容到本地
                        # print(f"{download_folder_path}下载完成")  # 打印下载完成信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/909816.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构-归并排序笔记

【数据结构】八大排序(超详解附动图源码)_数据结构排序-CSDN博客 看这个学思路 一 归并排序介绍: 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解&#xf…

编译器优化乌龙——记一次死循环不进入问题

记一次死循环不生效问题 看如下代码&#xff0c;本意是我们模拟一次死循环&#xff0c;然后会在中断处理函数中更改waiting的值&#xff0c;更改waiting的值后&#xff0c;跳出死循环。 int waiting 0; while(waiting0){}运行起来发现&#xff0c;程序根本就没有进入这个死循…

构建第一个ArkTs应用

1、新建第一个页面文件。在“Project”窗口&#xff0c;点击“entry > src > main > ets > pages”&#xff0c;打开“Index.ets”文件&#xff0c;进行页面的编写。 2、新建第二个页面文件。在“Project”窗口&#xff0c;打开“entry > src > main > e…

一文搞懂Linux kernel编译步骤

一、前言 什么是Linux的内核编译呢&#xff1f;简单来说&#xff0c;Linux内核编译是一个将内核源代码转换成可在特定的硬件架构上运行的二进制文件的过程。通过编译内核&#xff0c;我们可以根据自己的需求和兴趣对内核进行定制和优化&#xff0c;以满足特定的应用场景。下文…

IDEA构建JavaWeb项目,并通过Tomcat成功运行

目录 一、Tomcat简介 二、Tomcat安装步骤 1.选择分支下载 2.点击下载zip安装包 3.解压到没有中文、空格和特殊字符的目录下 4.双击bin目录下的startup.bat脚本启动Tomcat 5.浏览器访问Tomcat 6.关闭Tomcat服务器 三、Tomcat目录介绍 四、WEB项目的标准结构 五、WEB…

消息通知——公众号、小程序、短信对比

消息通知——公众号、小程序、短信对比 引言 在数字化时代&#xff0c;高效、准确的消息通知对于提升用户体验、增强用户粘性至关重要。本报告将深入分析三种常见的消息通知方式&#xff1a;微信公众号推送、微信小程序推送以及手机短信推送&#xff0c;从实现方式、优缺点及细…

三维测量与建模笔记 - 3.2 直接线性变换法标定DLT

DLT - Direct Linear Transform 上图中&#xff0c;透视成像对应的公式是共线方程&#xff0c;可以参考以下链接&#xff1a; https://zhuanlan.zhihu.com/p/101549821https://zhuanlan.zhihu.com/p/101549821 对于标定来说&#xff0c;需要找到。已知量是。 (u,v)是…

消息队列面试——打破沙锅问到底

消息队列的面试连环炮 前言 你用过消息队列么&#xff1f;说说你们项目里是怎么用消息队列的&#xff1f; 我们有一个订单系统&#xff0c;订单系统会每次下一个新订单的时候&#xff0c;就会发送一条消息到ActiveMQ里面去&#xff0c;后台有一个库存系统&#xff0c;负责获取…

【论文复现】KAN卷积:医学图像分割新前沿

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀知识图谱推理 1. 概述2. 核心创新点3. 模块介绍KANUNext模块 4. 本文主要结构5. 主要代码6. 数据集7. 结果展示8. 参考文献 前言&#xff1a;…

Oracle与SQL Server的语法区别

1&#xff09;日期和日期转换函数。 SQL: SELECT A.*, CASE WHEN NVL(PAA009,) OR PAA009 >Convert(Varchar(10), SYSDATE,120) THEN Y ELSE N END AS ActiveUser FROM POWPAA A WHERE PAA001admin or PAA002admin Oracle: SELECT A.*, CASE WHEN NVL(PAA009,) or PAA009&…

基于TRIZ理论的便携式光伏手机充电装置创新

随着智能手机功能的日益强大&#xff0c;电量消耗问题也日益凸显&#xff0c;尤其是在户外活动时&#xff0c;电量告急常常让人措手不及。面对这一挑战&#xff0c;基于TRIZ&#xff08;发明问题解决理论&#xff09;的创新思维&#xff0c;一款全新的便携式光伏手机充电装置应…

Vue3父传子

1. App.vue - 父组件 咱们先来看左边的 App.vue&#xff0c;它扮演的是“父亲”角色——你可以想象它是一位热心的老爸&#xff0c;手里拿着一条消息&#xff0c;正准备把这条消息送到“儿子”那里。 <script setup> // 这个 setup 就像一个神奇的开关&#xff0c;一开…

前端 算法 双指针

文章目录 三数之和移动零盛最多水的容器接雨水 三数之和 leetcode 三数之和 题目链接 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请你返回所有…

EPSON机械手与第三方相机的校准功能设计By python

EPSON机械手与第三方相机的校准功能设计By python 使用Python来实现EPSON机械手与第三方相机的校准功能是一个复杂但可行的任务。这通常涉及以下几个步骤:硬件接口通信、图像处理、标定算法实现和控制逻辑编写。 1. 环境准备 首先,库 pip install numpy opencv-python pyse…

NPU 可不可以代替 GPU

结论 先说结论&#xff0c;GPU分为可以做图形处理的传统意义上的真GPU&#xff0c;做HPC计算的GPGPU和做AI加速计算的GPGPU&#xff0c;所以下面分别说&#xff1a; 对于做图形处理的GPU&#xff0c;这个就和NPU 一样&#xff0c;属于DSA&#xff0c;没有替代性。当然&#xf…

python画图|hist()函数画直方图进阶

【1】引言 前序已经学习了hist()函数画直方图的基础教程&#xff0c;相关文章见下述链接&#xff1a; python画图|hist()函数画直方图初探-CSDN博客 在这里我们初步认识了hist()函数&#xff0c;并使用该函数画出了8个直方图。 之后又用bar(&#xff09;函数进行对比&#…

推荐一款非常好用的C/C++在线编译器

C/C作为一门底层、高效的编程语言&#xff0c;广泛应用于系统开发、游戏引擎、嵌入式系统等领域。然而&#xff0c;C/C的开发环境配置会让开发者把部分时间消耗在这件事上&#xff0c;也经常会遇到各种各样的环境问题。 本地开发的痛点 环境配置复杂&#xff1a;C/C的开发环境…

kafka如何获取 topic 主题的列表?

大家好&#xff0c;我是锋哥。今天分享关于【kafka如何获取 topic 主题的列表&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; kafka如何获取 topic 主题的列表&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在Kafka中&#xff0c;可以…

用示例来看C2Rust工具的使用和功能介绍

C2Rust可以将C语言的源代码转换成Rust语言的源代码。下面是一个简单的C语言代码示例&#xff0c;以及使用c2Rust工具将其转换为Rust安全代码的过程。 C语言源代码示例 // example.c #include <stdio.h>int add(int a, int b) {return a b; }int main() {int result a…

数据结构排序之直接选择排序--堆排序

堆排序 堆排序 (Heapsort) 是指利用堆积树&#xff08;堆&#xff09;这种数据结构所设计的一种排序算法&#xff0c;它是选择排序的一种。它是通过堆来进行选择数据。需要注意的是排升序要建大堆&#xff0c;排降序建小堆。 直接选择排序的特性总结&#xff1a; 1. 堆排序使…