2016-11-18 83 views
0

我想找到其中包含BeautifulSoup4文本和一些噪音的鏈接:查找其文本的文本有可能包含噪聲

<a href="#"> 
    <span>gggggggggggg</span> 
    Some text123 
    <div>fdsfdsfdsfd</div> 
    <span> fdsfdsfdsfd</span> 
</a> 

當我試圖通過「有些text123」找到它,它失敗:

soup123.find("a", "Some text123") # => NoneType 

這是什麼解決方案?

更新:

的「一」是不是單一的一個,可以有很多。但帶有「一些text123」的「a」是獨一無二的。

+0

用'soup123.find嘗試( 「A」,文本= re.compile (「一些text123」))' – Fejs

+0

請發佈真正的html代碼 –

+0

@Fejs我試過並沒有收到任何東西 –

回答

0

以下內容可能會滿足您的需求。它只是找到所有a標籤並確定您正在查找的搜索文本是否存在。然後,它會顯示任何匹配的條目相關的href標籤:

from bs4 import BeautifulSoup 

html = """ 
    <a href="#1"><span>gggggggggggg</span>Some text123<div>fdsfdsfdsfd</div><span> fdsfdsfdsfd</span></a> 
    <a href="#2"><span>gggggggggggg</span>Some text124<div>fdsfdsfdsfd</div><span> fdsfdsfdsfd</span></a>""" 

soup = BeautifulSoup(html, "html.parser") 
search = "Some text123" 

for a in soup.find_all('a'): 
    if search in a.text: 
     print a['href'] 

所以我的例子,它會顯示:

#1 
0

這裏的工作解決方案(測試):

a_tag = soup.find('a', text=re.compile("Some text123")).parent 

如果你沒有得到這樣的輸出:

<a href="#"> 
<span>gggggggggggg</span> 
    Some text123 
    <div>fdsfdsfdsfd</div> 
<span> fdsfdsfdsfd</span> 
</a> 

使用我的命令後,那麼你不必輸入您希望在soup。如果這部分代碼是由JS生成的,那麼您將無法通過BS得到它。

相關問題