Python实现一键提取页面所有链接

Written by

in

文章目录
  • 周一上午,老板甩给你一个 200 页的会议记录 TXT:“把里面所有网址整理成 Excel,午饭前给我!” 你打开文档一看,密密麻麻全是文字,网址藏在各个角落,复制粘贴能点到手抽筋。 这时,你从抽屉掏出“小白瑞士军刀”——links_extractor.py。 把它拖到 TXT 文件上,双击,三秒后自动生成 xxx_links.txt,所有网址排队站好。 你直接复制进 Excel,泡杯咖啡的功夫就交差。痛点解决:再也不用肉眼找链接,省时 99%。
  • 使用Python一次性批量下载网页内所有链接 完整代码 import os import requests from bs4 import BeautifulSoup # 目标网页的URL url = “https://” # 请将此处替换为实际的网页URL # 指定下载文件的文件夹路径 # 使用原始字符串 download_folder = r”D:” # 或者使用双反斜杠 # download_folder = “D:\AScholarFolder\” # 创建下载文件夹(如果不存在) if not os.path.exists(download_folder): os.makedirs(download_folder) # 获取网页内容 response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, ‘html.parser’) # 找到所有的 <a> 标签 for a_tag in soup.find_all(‘a’): href = a_tag.get(‘href’) if href: # 下载文件 file_name = href.split(‘/’)[-1] file_path = os.path.join(download_folder, file_name) try: file_response = requests.get(href) if file_response.status_code == 200: with open(file_path, ‘wb’) as file: file.write(file_response.content) print(f”已下载: {file_name}”) else: print(f”下载失败: {href}”) except: print(f”下载失败: {href}”) else: print(f”无法获取网页内容: {url}”)
  • links_extractor.py 这把 30 行瑞士军刀,用三招“读文本、抓链接、写文件”帮你把散落各处的网址瞬间归队。 再加批量扫描或迷你窗口,它就从命令行小工具升级为效率神器。 下次老板再甩 TXT,你只需双击脚本,喝杯水的功夫就交卷! 到此这篇关于Python实现一键提取页面所有链接的文章就介绍到这了,更多相关Python提取页面链接内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Python爬虫获取页面所有URL链接过程详解 python3+selenium获取页面加载的所有静态资源文件链接操作 Python获取当前页面内所有链接的四种方法对比分析 Python实现抓取页面上链接的简单爬虫分享
  • 目录
    • 故事开场
    • 代码解析
      • 功能块 1:把文件读进来
      • 功能块 2:用“网址捕手”抓链接
      • 功能块 3:把结果写成新文件
      • 功能块 4:一键启动入口
    • 如果还想更厉害
      • 扩展点子 1:批量扫描整个文件夹
      • 扩展点子 2:加个迷你窗口,拖文件就能跑
    • 方法补充
      • 总结

        链接提取, 正则神器, 批量文本, 小白脚本

        周一上午,老板甩给你一个 200 页的会议记录 TXT:“把里面所有网址整理成 Excel,午饭前给我!”

        你打开文档一看,密密麻麻全是文字,网址藏在各个角落,复制粘贴能点到手抽筋。

        这时,你从抽屉掏出“小白瑞士军刀”——links_extractor.py

        把它拖到 TXT 文件上,双击,三秒后自动生成 xxx_links.txt,所有网址排队站好。

        你直接复制进 Excel,泡杯咖啡的功夫就交差。痛点解决:再也不用肉眼找链接,省时 99%。

        像翻书一样,先把整本 TXT 读进内存,后面才好找东西。

        def read_text_file(file_path):
            with open(file_path, encoding='utf-8') as f:
                return f.read()
        

        encoding='utf-8' 防止中文乱码,小白也能放心用。

        正则表达式就像一张渔网,http 开头或 www 开头都能一网打尽。

        import re
        def extract_urls(text):
            pattern = r"(?:(?:https?|ftp)://)?[w/-?=%.]+.[w/-?=%.]+"
            return re.findall(pattern, text)
        

        re.findall 一次性把所有匹配结果装进列表,方便后面输出。

        抓到的链接按行写进 原文件名_links.txt,清爽不覆盖原文件。

        def export_urls(urls, file_path):
            with open(file_path.replace(".txt", "_links.txt"), "w", encoding='utf-8') as f:
                f.write("n".join(urls))
        

        一行一个链接,Excel 直接粘贴即可。

        把上面三块拼起来,双击脚本就能跑。

        if __name__ == "__main__":
            import sys
            get_urls(sys.argv[1])
        

        运行方式:

        python links_extractor.py 会议记录.txt

        一次性抓完目录里所有 TXT,结果合并到一张表。

        import glob, os
        all_urls = []
        for txt_file in glob.glob("*.txt"):
            all_urls.extend(extract_urls(read_text_file(txt_file)))
        with open("all_links.txt", "w", encoding='utf-8') as f:
            f.write("n".join(set(all_urls)))  # set 去重
        

        双击后,整个文件夹的网址全进 all_links.txt

        tkinter 做 GUI,小白再也不用敲命令。

        import tkinter as tk
        from tkinter.filedialog import askopenfilename
        
        root = tk.Tk()
        root.withdraw()  # 隐藏主窗口
        file = askopenfilename(filetypes=[("Text files", "*.txt")])
        if file:
            get_urls(file)
            tk.messagebox.showinfo("完成", f"已生成 {file}_links.txt")
        

        双击脚本→弹窗选文件→秒出结果,全程鼠标操作。

        使用Python一次性批量下载网页内所有链接

        完整代码

        import os
        import requests
        from bs4 import BeautifulSoup
         
        # 目标网页的URL
        url = "https://"  # 请将此处替换为实际的网页URL
        # 指定下载文件的文件夹路径
        # 使用原始字符串
        download_folder = r"D:"
        # 或者使用双反斜杠
        # download_folder = "D:\AScholarFolder\"
        # 创建下载文件夹(如果不存在)
        if not os.path.exists(download_folder):
            os.makedirs(download_folder)
        # 获取网页内容
        response = requests.get(url)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            # 找到所有的 <a> 标签
            for a_tag in soup.find_all('a'):
                href = a_tag.get('href')
                if href:
                    # 下载文件
                    file_name = href.split('/')[-1]
                    file_path = os.path.join(download_folder, file_name)
                    try:
                        file_response = requests.get(href)
                        if file_response.status_code == 200:
                            with open(file_path, 'wb') as file:
                                file.write(file_response.content)
                            print(f"已下载: {file_name}")
                        else:
                            print(f"下载失败: {href}")
                    except:
                        print(f"下载失败: {href}")
        else:
            print(f"无法获取网页内容: {url}")

        links_extractor.py 这把 30 行瑞士军刀,用三招“读文本、抓链接、写文件”帮你把散落各处的网址瞬间归队。

        再加批量扫描或迷你窗口,它就从命令行小工具升级为效率神器。

        下次老板再甩 TXT,你只需双击脚本,喝杯水的功夫就交卷!

        到此这篇关于Python实现一键提取页面所有链接的文章就介绍到这了,更多相关Python提取页面链接内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

        您可能感兴趣的文章:

        • Python爬虫获取页面所有URL链接过程详解
        • python3+selenium获取页面加载的所有静态资源文件链接操作
        • Python获取当前页面内所有链接的四种方法对比分析
        • Python实现抓取页面上链接的简单爬虫分享

        站内搜索