当前位置: 首页 > article >正文

爬虫下载网页文夹

爬虫下载网页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}下载完成")  # 打印下载完成信息

http://www.kler.cn/a/382344.html

相关文章:

  • 云原生服务网格Istio实战
  • 鸿蒙app封装 axios post请求失败问题
  • curl也支持断点续传
  • 财会〔2024〕22号发布,全面提高管理会计数字化、智能化水平,泛微·齐业成来助力
  • Apache Samza开源的分布式流处理框架
  • flink实现复杂kafka数据读取
  • 【C++刷题】力扣-#697-数组的度
  • 【人工智能】Transformers之Pipeline(二十二):零样本文本分类(zero-shot-classification)
  • 7.2 设计模式
  • [WSL][桌面][X11]WSL2 Ubuntu22.04 安装Ubuntu桌面并且实现GUI转发(Gnome)
  • 【论文阅读】-- 多元时间序列聚类算法综述
  • Sigrity Power SI 3D-EM Full Wave Extraction模式如何进行S参数提取和观测3D电磁场和远场操作指导(一)
  • “再探构造函数”(2)
  • 解释器模式:有效处理语言的设计模式
  • Redis 权限控制(ACL)|ACL 命令详解、ACL 持久化
  • 【题解】CF2033G
  • ThinkPHP腾讯云国际短信对接
  • W5100S-EVB-Pico2评估板介绍
  • 史上最全盘点:一文告诉你低代码(Low-Code)是什么?为什么要用?
  • 【青牛科技】GC8549替代LV8549/ONSEMI在摇头机、舞台灯、打印机和白色家电等产品上的应用分析
  • 100种算法【Python版】第48篇——计数排序
  • CNN在线识别手写中文
  • 小区搜索和SSB简介
  • Rust 异步编程实战
  • 总结:Vue2中双向绑定不生效的排查方法及原理
  • [云讷科技]DASA数字孪生机器人概念