我正在制作python链接验证程序,以便我可以废弃给定网址中的所有链接并验证它们。
我试图在for循环中使用re模块,结果证明它是无效的语法。
但我真的无法想出其他方法可以取出所有链接并检查每一个链接..所以我需要帮助。
以下是代码:
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'部分语法无效,所以我甚至无法测试它...... :(
并验证确保链接未被破坏的方法,这意味着它们是有效的网址,这样我们就不会得到404" Not Found"来自他们的消息。
答案 0 :(得分:2)
您可以使用正则表达式抓取网址,如:
urls = re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', res.text)
urls
会为您提供网址列表。
从那里,您可以通过执行以下操作来验证链接:
for url in urls:
res = requests.get(url)
if res.status_code != requests.codes.ok:
print('{0} is a broken link. Response: 404 Not Found'.format(url))