Python爬网站图片、CSS文件和JS文件

首先,通过input()函数获取用户输入的网址,并使用requests库发送GET请求获取网页的HTML内容。然后,使用BeautifulSoup库解析HTML内容,创建一个BeautifulSoup对象。

接下来,通过find_all()方法找到所有的img标签,然后遍历这些标签。对于每个img标签,通过attrs属性获取其src属性值,即图片的URL。如果URL为空或不以http开头,则将其补充为完整的URL。然后,使用requests库发送GET请求获取图片的二进制内容,并使用open()函数创建一个文件,并将图片内容写入文件中。

然后,通过find_all()方法找到所有link标签中rel属性为stylesheet的标签,然后遍历这些标签。对于每个标签,通过attrs属性获取其href属性值,即CSS文件的URL。如果URL为空或不以http开头,则将其补充为完整的URL。然后,使用requests库发送GET请求获取CSS文件的内容,并使用open()函数创建一个文件,并将CSS内容写入文件中。

最后,通过find_all()方法找到所有的script标签,然后遍历这些标签。对于每个标签,通过attrs属性获取其src属性值,即JS文件的URL。如果URL为空或不以http开头,则将其补充为完整的URL。然后,使用requests库发送GET请求获取JS文件的内容,并使用open()函数创建一个文件,并将JS内容写入文件中。

最后,输出下载完毕的提示信息,并使用input()函数等待用户按回车键退出程序。

import os
import requests
from bs4 import BeautifulSoup# 获取页面的HTML
url = input("请输入要下载的网址: ")  # response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')# 下载图片
images = soup.find_all('img')
for img in images:image_url = img.attrs.get('src')if not image_url:continueif not image_url.startswith('http'):image_url = url + image_urlresponse = requests.get(image_url)with open(os.path.basename(image_url), 'wb') as f:f.write(response.content)# 下载CSS文件
css_files = soup.find_all('link', {'rel': 'stylesheet'})
for css_file in css_files:css_url = css_file.attrs.get('href')if not css_url:continueif not css_url.startswith('http'):css_url = url + css_urlresponse = requests.get(css_url)with open(os.path.basename(css_url), 'wb') as f:f.write(response.content)# 下载JS文件
scripts = soup.find_all('script')
for script in scripts:js_url = script.attrs.get('src')if not js_url:continueif not js_url.startswith('http'):js_url = url + js_urlresponse = requests.get(js_url)with open(os.path.basename(js_url), 'wb') as f:f.write(response.content)

原创 蓝胖子之家 蓝胖子之家

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bash之基本运算符

一.算术运算符 vim test.sh #!/bin/basha10 b20valexpr $a $b echo "a b : $val"valexpr $a - $b echo "a - b : $val"valexpr $a \* $b echo "a * b : $val"valexpr $b / $a echo "b / a : $val"valexpr $b % $a echo "b % a …

《重置MobaXterm密码并连接Linux虚拟机的完整操作指南》

目录 引言 一、双击MobaXterm_Personal_24.2进入,但是忘记密码。 那么接下来请跟着我操作。 二、点击此链接,重设密码。 三、下载完成后,现在把这个exe文件解压。注意解压要与MobaXterm_Personal_24.2.exe在同一目录下哦,不然…

LMS自适应滤波器原理与应用Matlab程序

1. 引言 自适应滤波器是一种根据输入数据动态调整其滤波系数的滤波器,能够在未知或变化的环境中有效工作。最小均方(LMS,Least Mean Squares)自适应滤波器是自适应滤波器家族中最经典的一种,其以计算简便、收敛速度快…

Docker基础部署

一、安装Ubuntu系统 1.1 新建虚拟机 打开VMware Workstation,选择文件->新建虚拟机->典型(推荐T)->安装程序光盘映像文件->输入虚拟的名字->一直下一步即可 安装程序光盘映像文件 注意:选择CentOS-7-x86_64-DVD-…

基于知识图谱的美食推荐系统

想象一下,每次打开应用,它都能为你量身推荐最符合你口味的美食,不需要再为“今天吃什么?”烦恼。这听起来是不是非常吸引人?今天就给大家介绍一个适合做毕业设计的创新项目——基于知识图谱的美食推荐系统!…

STM32_实验5_中断实验

通过外部中断来检测四个按键按下的状态: WK_UP 控制蜂鸣器响和停 KEY0 控制 LED_R 互斥点亮 KEY1 控制 LED_G 互斥点亮 KEY2 控制 LED_B 互斥点亮。 中断的基本概念: 中断请求(IRQ): 当发生某个特定事件(例…

告别ELK,APO提供基于ClickHouse开箱即用的高效日志方案——APO 0.6.0发布

ELK一直是日志领域的主流产品,但是ElasticSearch的成本很高,查询效果随着数据量的增加越来越慢。业界已经有很多公司,比如滴滴、B站、Uber、Cloudflare都已经使用ClickHose作为ElasticSearch的替代品,都取得了不错的效果&#xff…

AOP 面向切面编程

1.准备工作&#xff0c;创建maven项目 1. pom.xml 加入依赖 <dependencies><!--spring核心坐标--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>6.0.6</version&…

算术移位的学习

术移位&#xff08;Arithmetic Shift&#xff09;是一种位移操作&#xff0c;主要用于有符号整数。它与逻辑移位相似&#xff0c;但在处理负数时有一些显著的不同。算术移位能够保持符号位的完整性&#xff0c;因此在有符号数的移位运算中非常有用。 算术移位的类型 算术左移&…

打造商业数字化生态,价值何在?

​在当今数字化时代&#xff0c;商业格局正发生着深刻变革。打造商业数字化生态&#xff0c;成为众多企业的战略选择。那么&#xff0c;它的价值究竟几何呢&#xff1f; 商业数字化生态是利用数字技术&#xff0c;将企业、消费者、合作伙伴等各方连接起来&#xff0c;形成相互依…

AI时代,谷歌会像当年的IBM一样陨落吗?

​从2015年到2024年 在2015年的某个清晨&#xff0c;阳光透过硅谷的薄雾&#xff0c;照亮了谷歌总部那标志性的入口。那时&#xff0c;谷歌正处于技术的巅峰&#xff0c;人们怀着激动的心情讨论着它如何将机器学习和人工智能&#xff08;AI&#xff09;无缝融入到所有产品中。它…

ubuntu 开启haproxy UI

一、修改haproxy.cfg nano /etc/haproxy/haproxy.cfg 添加一段 listen statsbind *:8080stats enablestats uri /uistats refresh 10sstats auth admin:123456stats admin if TRUE 重启 sudo systemctl restart haproxy 浏览器访问&#xff1a; http://192.168.31.182:80…

CMakeLists.txt 编写规则

目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…

Node.js初学者指南:搭建HTTP服务器、获取请求信息及响应、变量声明与NPM包管理

精神畅快&#xff0c;心气平和&#xff1b;饮食有节&#xff0c;寒暖当心&#xff1b;起居以时&#xff0c;劳逸均匀 文章目录 node.js使用http搭建服务器的问题获取请求相关的信息响应相关的信息var、let、const对比npm使用全局安装包 node.js 概念 node.js是一个基于Chrome …

渗透实战 JS文件怎么利用

1.前言 关于JS在渗透测试中的关键作用&#xff0c;想必不用过多强调&#xff0c;在互联网上也有许多从JS中找到敏感信息从而拿下关键系统的案例。大部分师傅喜欢使用findsomething之类的浏览器插件&#xff0c;也有使用诸如Unexpected.information以及APIFinder之类的Burp插件…

QT--文本框 QLineEdit、qtextedit

在Qt中&#xff0c;文本框&#xff08;QLineEdit 或 QTextEdit&#xff09;和标签&#xff08;QLabel&#xff09;是两种不同的部件&#xff08;widget&#xff09;&#xff0c;它们的主要区别在于用途和功能&#xff1a; QLabel&#xff08;标签&#xff09; 用途&#xff1…

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力&#xff0c;而在这一过程中&#xff0c;企业架构&#xff08;EA&#xff09;发挥着至关重要的作用。这本白皮书《世界级企业架构&#xff1a;建立和发展EA能力的领导者方法》提供了深入的理论指导&#xff0c;为企业如何…

专线物流公告服务平台痛点分析:重塑信任、效率与透明度的新篇章

专线物流公告服务平台痛点分析&#xff1a;重塑信任、效率与透明度的新篇章 在当今全球化的商业环境中&#xff0c;专线物流服务作为连接生产与消费的关键纽带&#xff0c;其重要性不言而喻。然而&#xff0c;随着市场竞争的加剧和消费者需求的日益多样化&#xff0c;专线物流…

禁止VMware Service进程开机自动启动

方法一&#xff1a;使用服务管理器 (Services.msc) 打开服务管理器&#xff1a; 按 Win R 打开运行对话框&#xff0c;输入 services.msc&#xff0c;然后按 Enter。 找到 VMware Authorization Service&#xff1a; 在服务列表中找到 VMware Authorization Service。 更改启动…

由云智慧发起的《数字政府统一运维 第1部分:运维平台建设指南》团标正式发布

2024年9月&#xff0c;由云智慧和中国信通院联合主导的《数字政府统一运维 第1部分&#xff1a;运维平台建设指南》团体标准完成编写&#xff0c;经中国互联网协会相关专家审查通过并准予发布&#xff0c;标准编号&#xff1a;T/ISC 0062-2024。 中国数字政府建设已经进入了高…