如何在使用BeautifulSoup解析页面时只获取有效的URL链接?

问题描述 投票:0回答:1

我正在尝试获取页面链接到的页面列表(使用标记)。解析页面时我使用BeautifulSoup:

page = opener.open(url)
soup = BeautifulSoup(page.read(), features='lxml')
links = soup.findAll("a", href=True)
for link in links:
    validLink = bool(re.match(r'^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/\n]+)', link["href"]))
    if validLink:
         myset.append(link["href"])

这样它就会查找<a href>标签来查找链接并返回链接页面的URL。但是myset中生成的url看起来像这样:

enter image description here

如何过滤带有井号的链接?此外,如果我想过滤广告链接或视频,...我应该使用标签的哪个元素?

python regex parsing url
1个回答
1
投票

对于以http或https开头的链接(您只需要声明http),您可以将属性选择器与start with operator一起使用

links = [item['href'] for item in soup.select('[href^=http]')]

对于广告链接/视频 - 您希望包含还是排除?我们需要查看相关的html。有网址可以使用吗?

© www.soinside.com 2019 - 2024. All rights reserved.