【html】html中base标签批量修改html的目标链接地址

一个页面有很多链接,但是需要打开的是新窗口,手动添加的话,肯定很麻烦,后来看到HTML标签有一个base,

可以把全部的链接重写,方便简洁!

定义和用法

<base> 标签为页面上的所有链接规定默认地址或默认目标。

通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。

使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。

注释:<base> 标签必须位于 head 元素内部。

 

代码:

1 <head>
3 <base target="_blank"/>
4 </head>
5  
6 <body>
7 <img src="eg_smile.gif"/>
8 <a href="http://www.w3school.com.cn">W3School</a>
9 </body>

效果可以查看:Li

import os import requests from urllib.parse import urljoin from bs4 import BeautifulSoup import logging from pathlib import Path # 配置日志记录 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) def get_page_content(url): """获取网页内容""" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36' } try: response = requests.get(url, headers=headers, timeout=10) response.raise_for_status() response.encoding = response.apparent_encoding return response.text except requests.exceptions.RequestException as e: logging.error(f"请求失败: {e}") return None def extract_file_links(html, base_url): """提取文件下载链接""" soup = BeautifulSoup(html, 'html.parser') file_links = [] # 查找所有包含文件扩展名的链接 for link in soup.find_all('a', href=True): href = link['href'] if any(href.lower().endswith(ext) for ext in ('.pdf', '.doc', '.docx', '.xls', '.xlsx', '.zip', '.rar')): absolute_url = urljoin(base_url, href) file_links.append((absolute_url, link.text.strip())) return file_links def download_file(url, save_dir): """下载单个文件""" try: response = requests.get(url, stream=True, timeout=15) response.raise_for_status() # 从URL获取文件名 filename = os.path.basename(url.split('?')[0]) # 去除URL参数 if not filename: filename = f"file_{hash(url)}" # 创建保存目录 Path(save_dir).mkdir(parents=True, exist_ok=True) # 保存文件 file_path = os.path.join(save_dir, filename) with open(file_path, 'wb') as f: for chunk in response.iter_content(chunk_size=8192): if chunk: f.write(chunk) logging.info(f"成功下载: {filename}") return True except Exception as e: logging.error(f"下载失败 {url}: {str(e)}") return False def main(): target_url = "http://www.nhc.gov.cn/lljks/zcwj2/new_list.shtml" save_directory = "./downloaded_files" # 获取页面内容 html_content = get_page_content(target_url) if not html_content: return # 提取文件链接 file_links = extract_file_links(html_content, target_url) if not file_links: logging.warning("未找到可下载文件") return # 下载所有文件 success_count = 0 for url, name in file_links: if download_file(url, save_directory): success_count += 1 logging.info(f"下载完成,成功{success_count}/{len(file_links)}个文件") if __name__ == "__main__": main()
最新发布
03-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值