我正在尋找從網頁中提取所有鏈接。我以前一直用這個過程來提取的「href」選項如:從Python頁面中提取所有鏈接
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頁面中提取所有鏈接?
跟帖:
我的方式來提取這是不是在「一」的標籤標準「href」屬性的一部分鏈接,可以很容易地提取(例如我想提取環節特別感興趣通過window.open()或javascript ...或其他鏈接包含在頁面中的方式提供)。相關地,因爲網站上的大多數鏈接都是相對的,所以在頁面上尋找以http開頭的文本不會捕獲它們全部。
對不起,我誤解了問題。 Bs4不是用來解析js的,所以我不認爲有一個簡單的方法可以得到結果。作爲一個'hacky'解決方案,您可以使用正則表達式與'onclick'屬性進行鏈接。 –