繁体   English   中英

从Python页面中提取所有链接

[英]Extract all links from a page in Python

我正在寻找从网页中提取所有链接。 我以前使用的过程是提取“ 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开头的文本不会捕获所有链接。

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

soup = str(soup)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM