【发布时间】:2017-07-12 22:24:46
【问题描述】:
我希望从网页中提取所有链接。我之前使用的过程是提取“href”选项,例如:
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_text, "lxml")
for a in soup.findAll("a"):
print (a["href"])
但有些链接有onclick 属性而不是使用href
例如:
<a href="#" onclick="window.open('link_to_open_was_here', '', 'height=400,width=600'); return false;" title="..." style="..." target="_blank">...</span></a>
菜单栏中的其他链接是使用 javascript 的 window.open 选项构建的。
我可能会编写代码来识别不使用 href 属性的方式,但有没有更简单/更标准的方式从 html 页面中提取所有链接?
跟进:
我对提取“a”标签中不属于标准“href”属性的链接的方法特别感兴趣,这些链接很容易提取(例如,我想提取通过 window.open() 包含的链接或 javascript... 或在页面上包含链接的其他方式)。相关地,由于网站上的大多数链接都是相对的,因此在页面上查找以 http 开头的文本并不会全部捕获它们。
【问题讨论】:
-
对不起,我误读了这个问题。 Bs4 不是为解析 js 而设计的,所以我认为没有一种简单的方法可以得到结果。作为“hacky”解决方案,您可以将正则表达式用于具有“onclick”属性的链接。
标签: python python-3.x beautifulsoup