我已经编写了一个代码,获取任何给定站点的html代码,然后从中获取所有链接并将其保存在列表中。我的目标是,我想改变html文件中的绝对链接的所有相对链接
以下是链接:
src="../styles/scripts/jquery-1.9.1.min.js"
href="/PhoneBook.ico"
href="../css_responsive/fontsss.css"
src="http://www.google.com/adsense/search/ads.js"
L.src = '//www.google.com/adsense/search/async-ads.js'
href="../../"
src='../../images/plus.png'
vrUrl ="search.aspx?searchtype=cat"
我从html文件中复制了几个链接,以保持问题的简单性和不易出错
以下是html文件中使用的不同URL:
http://yourdomain.com/images/example.png //yourdomain.com/images/example.png /images/example.png images/example.png ../images/example.png ../../images/example.png
Python代码:
linkList = re.findall(re.compile(u'(?<=href=").*?(?=")|(?<=href=\').*?(?=\')|(?<=src=").*?(?=")|(?<=src=\').*?(?=\')|(?<=action=").*?(?=")|(?<=vrUrl =").*?(?=")|(?<=\')//.*?(?=\')'), str(html))
newLinks = []
for link1 in linkList:
if (link1.startswith("//")):
newLinks.append(link1)
elif (link1.startswith("../")):
newLinks.append(link1)
elif (link1.startswith("../../")):
newLinks.append(link1)
elif (link1.startswith("http")):
newLinks.append(link1)
elif (link1.startswith("/")):
newLinks.append(link1)
else:
newLinks.append(link1)
在这一点上发生的是,当它涉及到第二个条件,即“../”它给我所有的网址,其中以“../”以及“../../”开始。这是我不需要的行为。“/”也是如此;它还获取以“/”开头的URL。我还尝试使用“startswith”函数的开始和结束参数,但这并不能解决问题
使用
str.count
方法如何:这似乎是真的,因为
../
只存在于url的开头相关问题 更多 >
编程相关推荐