python链路验证程序

2024-03-29 13:48:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作python链接验证程序,这样我就可以废弃给定url中的所有链接并进行验证。

我试图在for循环中使用re-module,结果发现它是无效语法。

但我真的想不出其他方法可以把所有的链接都拔出来检查每一个。。所以我需要帮助。

代码如下:

import requests, bs4,webbrowser, re
from selenium import webdriver

url = str(input())
res = requests.get(url)

try:
    res.raise_for_status()
except Exception as err:
    print('There was a probelm with the first url: %s' % (err))

soup = bs4.BeautifulSoup(res.text, "html.parser")
linkElems = soup.select('a')
hrefRegex = re.compile(r'^"http(s)?://.*?"')
mo = hrefRegex.search(linkElems)
for i in range (len(linkElems[i])
    mo = hrefRegex.search(linkElems[i])
    res = requests.get(mo.group())
        if res.status_code != requests.codes.ok:
                print('%s is broken link. Response: 404 "Not Found"' % (mo.group()))

它说“mo”部分有无效语法,所以我甚至不能测试它。。。:(

验证意味着要确保链接没有断开,这意味着它们是有效的url,这样我们就不会从它们那里得到404条“找不到”的消息。


Tags: importreurlforget链接status语法
1条回答
网友
1楼 · 发布于 2024-03-29 13:48:32

您可以使用regex获取URL,例如:

urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', res.text)

urls将为您提供一个url列表。在

从这里,您可以通过执行以下操作来验证链接是否未断开:

^{pr2}$

相关问题 更多 >