首页 > 解决方案 > 如何在使用 BeautifulSoup 解析页面时仅获取有效的 url 链接?

问题描述

我正在尝试获取页面链接到的页面列表(使用标签)。解析页面时,我使用 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看起来像这样:

在此处输入图像描述

如何过滤其中包含哈希符号的链接?此外,如果我想过滤广告链接视频,...我应该使用标签的哪个元素?

标签: pythonregexparsingurl

解决方案


对于以 http 或 https 开头的链接(您只需要说明 http),您可以使用带有以运算符开头的属性选择器

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

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


推荐阅读