使用 python, wget, curl 三者结合,制作一个爬虫(批量从镜像站点下载包)

import re
import subprocess
from timeout_decorator import timeout, TimeoutError

timeout_seconds = 5 # 超时事件 (秒)

# 定义超时装饰器
@timeout(timeout_seconds)
def run_command(command):
    return subprocess.run(command, shell=True)

# head url 字符串
head = "https://mirrors.ustc.edu.cn/CTAN/systems/win32/miktex/tm/packages/"

# 使用正则表达式匹配链接和文件名
target_pattern = r'<a href="([^"]+.tar.lzma)">([^<]+.tar.lzma)</a>'

# 打开文件
with open('theweb.html', 'r') as file:
    # 逐行读取并输出文件内容
    for line in file:
        # 使用strip()方法去除每行末尾的换行符
        line = line.strip()
        match = re.search(target_pattern, line)
        if match:
            filename = match.group(1)
            url = head + filename
            command = "wget -O - " + url + " > " + filename
            ret = 1
            while 0 != ret: 
                try: 
                    retval = run_command(command)
                    ret = retval.returncode
                except TimeoutError:
                    print("after timeouterror")
                    continue # 继续循环
                    
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值