【发布时间】:2017-09-16 14:44:02
【问题描述】:
我必须在 python 中创建一个函数来搜索 HTML 页面中的链接,然后为每个链接检查链接是否损坏。
首先我创建了一个函数,它搜索每个链接(无论是否损坏),没问题并将它们存储在一个名为“g”的数组中。
其次,我想通过检查数组“g”中的每个项目/元素来创建一个仅包含断开链接的数组“a”。
我不知道为什么,逐个链接的检查链接在该功能中不起作用。但是,如果我复制一个链接并将其粘贴为 shell 上的函数中的参数,它就可以工作。
import urllib.request
import re
import urllib.error
def check(url):
try:
f= urllib.request.urlopen(url)
except urllib.error.HTTPError :
return False
return True
def trouveurdurls(url):
f= urllib.request.urlopen(url)
b=(f.read().decode('utf-8'))
d=re.findall('<a href=".*</a>',b)
liste=[]
f.close()
for el in d:
g=re.findall('"https?://.*\.*"',el)
liste.append(g)
a=[]
for el in liste:
chaine= ''.join(map(str,el))
url=chaine.replace('\'','')
print(url)
#check(url)
b=trouveurdurls("http://127.0.0.1/")
【问题讨论】:
-
它是如何工作的?打印时您的网址看起来是否正确...?请注意,
re.findall返回一个列表(并且可能比您认为它应该做的更多),然后您将list添加到liste... 在每个阶段放置一些打印语句并确定最早的点事情开始寻找“错误”... -
另外,将 cmets 添加到您的代码中可以让人们更快地了解您的代码是如何工作的。
标签: python http url syntax-error