python - 如何在使用 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看起来像这样:
如何过滤其中包含哈希符号的链接?此外,如果我想过滤广告链接或视频,...我应该使用标签的哪个元素?
解决方案
对于以 http 或 https 开头的链接(您只需要说明 http),您可以使用带有以运算符开头的属性选择器
links = [item['href'] for item in soup.select('[href^=http]')]
对于广告链接/视频 - 您希望包含还是排除?我们将需要查看相关的 html。有网址可以使用吗?
推荐阅读
- oracle - 这个 Oracle 对象在哪里?
- rust - 添加泛型类型是函数的特征绑定时,为什么会出现“预期 8 个可能的标记之一”错误?
- visual-studio-code - VSCode Settings.json 为空
- slurm - SLURM 中的每个节点默认分区
- python - 无法在 Docker 中使用 python 从 GCS 存储桶中读取数据
- blazor - Blazor RenderTreeBuilder 中的事件
- shell - linux -- 创建一个目录结构,其中包含多个名称和空格
- javascript - 如何在 Node 中使用 React?
- asp.net - 您可以在代码隐藏中访问添加到 asp 页面的控件的 ID
- excel - 保存时使用 VBA 函数执行公式