爬虫下载网页文夹

devtools/2024/11/6 14:50:31/

爬虫下载网页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)  # 将相对链接转为完整的URLf2_list=get_name(f1_url)for i2 in f2_list:   if i2 and i2 not in ["../"]:f2_url = urljoin(f1_url, i2)  # 将相对链接转为完整的URLf3_list=get_name(f2_url)for i3 in tqdm(f3_list):   if i3 and i3 not in ["../"]:f3_url = urljoin(f2_url, i3)  # 将相对链接转为完整的URLresponse = requests.get(f3_url)  # 发送请求获取网页内容response.raise_for_status()  # 检查请求是否成功,若不成功则抛出异常file_response = requests.get(f3_url)  # 发送请求下载文件内容download_folder_new = download_folder+'/'+i1+i2download_folder_new=unquote(download_folder_new)os.makedirs(download_folder_new, exist_ok=True)download_folder_path=download_folder_new+i3download_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.ppmy.cn/devtools/131787.html

相关文章

履带式排爆演习训练机器人技术详解

履带式排爆演习训练机器人是现代反恐、救援及危险环境处理领域中的重要工具。它们结合了先进的机械设计、智能感知、精确控制及高效算法&#xff0c;能够在复杂、危险的环境中执行排爆、侦察、取样等多种高风险任务&#xff0c;极大地保障了人员安全。 技术特点 1. 卓越的地面…

5G学习笔记三之物理层、数据链路层、RRC层协议

5G学习笔记三之物理层、数据链路层、RRC层协议 物理层位于无线接口协议栈的最底层&#xff0c;作用&#xff1a;提供了物理介质中比特流传输所需要的所有功能。 1.3.1 传输信道的类型 物理层为MAC层和更高层提供信息传输的服务&#xff0c;其中&#xff0c;物理层提供的服务…

Web Components 是什么

Web Components 是一套不同的 web 标准&#xff0c;它们允许开发者创建可重用的自定义元素&#xff08;通过封装 JavaScript 类来定义&#xff09;&#xff0c;这些元素封装了 HTML、CSS 和 JavaScript。 Web Components 主要包括以下几个部分&#xff1a; Custom Elements&am…

使用kettle同步数据流程

使用kettle同步数据流程 一&#xff0e;Kettle软件安装&#xff08;解压即可使用&#xff09; 1.windows安装解压 pdi-ce-8.2.0.0-342.zip&#xff0c;点Spoon.bat启动kettle 2.Linux安装 把data-integration目录所有文件上传到服务器 二&#xff0e;安装数据库驱动把需要的…

TCP建立连接之后怎么保持长连接(检测连接断没断)

在TCP连接建立后&#xff0c;保持长连接的主要方式是通过定期的心跳检测&#xff08;Keep-Alive&#xff09;和超时机制。以下是一些具体的方法和机制 1. TCP Keep-Alive TCP协议本身提供了一种Keep-Alive机制&#xff0c;可以通过以下步骤实现&#xff1a; 启用Keep-Alive&…

数据结构————链表

一、引言 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了以后增容到200&#x…

【JavaScript】axios 二次封装拦截器(接口、实例、全局)

学习 coderwhy 老师结合 ts 二次封装 axios 目录结构 config config\index.ts // export const BASE_URL "http://codercba.com:9002"; export const TIME_OUT 10000;// 1. 根据环境变量区分接口地址 // let BASE_URL: string; // if (process.env.NODE_ENV &qu…

RabbitMQ 不公平分发介绍

RabbitMQ 是一个流行的开源消息代理软件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。在 RabbitMQ 中&#xff0c;消息分发策略对于系统的性能和负载均衡至关重要。默认情况下&#xff0c;RabbitMQ 使用公平分发&#xff08;Fair Dispatch&#xff09;策…