-- coding:utf-8 --

import re import requests from BlueGeneLib import Color

class GovEduUrlGrabber: def init(self): self.urlFile = 'url.txt' self.urlList = []

def grabUrl(self):
    # 打开文件
    with open('url.txt') as f:
        # 遍历每一行
        for url in f:
            # 去除换行符
            url = url.strip('

') print(Color.green('[] 正在爬取: ') + url) # 发送get请求 try: url = 'http://' + url r = requests.get(url, timeout=5) r.encoding = 'utf-8' except Exception as e: print(Color.red('[!] 爬取失败: ') + str(e)) continue # 获取响应的文本 html = r.text # 匹配指定的网址 res = re.findall(r'://(..(gov|edu)(.cn)?|.org(.cn)?)', html) for link in res: index = link[0].find('.cn/') # 查找第一个出现'.cn/'的位置 if index != -1: link = link[0][:index + 3] # 切片保留'.cn/'及其前面的部分 else: link = link[0] print(link) self.urlList.append(link.strip())

    # 去除重复项
    url_list = list(set(self.urlList))
    print(Color.green('[*] 爬取完成, 共爬取到: ') + str(len(url_list)) + Color.green(' 个网址'))

    # 将结果写入到文件
    with open('url.txt', 'a', encoding='utf-8') as f:
        for url in url_list:
            f.write(url + '\n')

if name == 'main': UrlGrabber = GovEduUrlGrabber() UrlGrabber.grabUrl()

优化说明:

1. 修改正则表达式,匹配更精准,避免误匹配

2. 修改切片操作,避免出现错误的网址

3. 删除无用的变量和导入语句

4. 添加注释,使代码更易读


原文地址: https://www.cveoy.top/t/topic/mBPm 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录