仅从python列表访问具有给定格式的链接

2024-05-16 19:30:56 发布

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

我已经编写了一个代码,获取任何给定站点的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”函数的开始和结束参数,但这并不能解决问题


Tags: 文件代码srccompng链接examplehtml
1条回答
网友
1楼 · 发布于 2024-05-16 19:30:56

使用str.count方法如何:

>>> src="../styles/scripts/jquery-1.9.1.min.js"
>>> src2='../../images/plus.png'
>>> src.count('../')
1
>>> src2.count('../')
2

这似乎是真的,因为../只存在于url的开头

相关问题 更多 >