从Python

时间:2017-07-12 22:24:46

标签: python python-3.x beautifulsoup

我希望从网页中提取所有链接。我之前使用的过程是提取" href"选项例如:

 from bs4 import BeautifulSoup
 soup = BeautifulSoup(html_text, "lxml")
 for a in soup.findAll("a"):
     print (a["href"])

但有些链接具有onclick属性,而不是href

e.g:

   <a href="#" onclick="window.open('link_to_open_was_here', '', 'height=400,width=600'); return false;" title="..." style="..." target="_blank">...</span></a>

和菜单栏中的其他链接使用javascript&#39; window.open选项。

我可能编写的代码可以识别href属性没有的方法,但是有更简单/更标准的方法从html页面中提取所有链接吗?

跟进:

我特别感兴趣的是提取不属于标准的链接的方法&#34; href&#34;属性在&#34; a&#34;标签,可以很容易地提取(例如,我想提取通过window.open()或javascript ...或其他链接包含在页面上的方式包含的链接)。相关地,由于站点上的大多数链接都是相对的,因此在页面上查找以http开头的文本并不会全部捕获它们。

1 个答案:

答案 0 :(得分:0)

我能想到抓住一切的唯一方法就是将整个汤结果转换为字符串并使用正则表达式使用http抓住所有内容:

soup = str(soup)

links = re.findall(r'(http.*?)"', soup)