2011-09-22 73 views
1

我試圖用BeautifulSoup解析HTML類和href標記。解析HTML標籤,基於使用美麗的湯

我想要的內容是這樣的:

<a class="yil-biz-ttl" id="yil_biz_ttl-2" href="http://some-web-url/" title="some title">Title</a> 

我想,得到了以下錯誤:

maxx = soup.findAll("href", {"class: "yil-biz-ttl"}) 
------------------------------------------------------------ 
    File "<ipython console>", line 1 
    maxx = soup.findAll("href", {"class: "yil-biz-ttl"}) 
              ^
SyntaxError: invalid syntax 

我想是字符串:http://some-web-url/

回答

1
soup.findAll('a', {'class': 'yil-biz-ttl'})[0]['href'] 

要找到所有這些鏈接:

for link in soup.findAll('a', {'class': 'yil-biz-ttl'}): 
    try: 
     print link['href'] 
    except KeyError: 
     pass 
+0

如果有超過10個這樣的鏈接,那麼您只提取第一個權限? – whatf

+0

我修改了我的答案,以顯示如何在頁面中找到所有此類鏈接。 – infrared

3

你錯過"class

maxx = soup.findAll("href", {"class: "yil-biz-ttl"}) 

應該

maxx = soup.findAll("href", {"class": "yil-biz-ttl"}) 

另外,我不認爲你可以搜索像href這樣的一個屬性,我認爲你需要搜索標籤:

maxx = [link['href'] for link in soup.findAll("a", {"class": "yil-biz-ttl"})] 
+0

'link ['href']可能比'link.href'更合適。後者返回鏈接的第一個子元素[](不是它的屬性)。 – jfs

+0

@ J.F.Sebastian我編輯了關鍵版本。我雖然在美麗的湯文檔中看到了這種語法,但現在看它,它似乎只是'tag.name',我認爲它是特殊的? – agf

0

那麼首先你所有的語法錯誤。你在class部分有錯誤的報價。

嘗試:

maxx = soup.findAll("href", {"class": "yil-biz-ttl"})

+0

問題中的示例html顯示OP關心的是''元素,而不是'' – jfs

1

要找到CSS類"yil-biz-ttl"所有<a/>元素有href屬性與任何在它:

from bs4 import BeautifulSoup # $ pip install beautifulsoup4 

soup = BeautifulSoup(HTML) 
for link in soup("a", "yil-biz-ttl", href=True): 
    print(link['href']) 

目前所有其他答案都不符合上述要求。