2011-09-22 71 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']) 

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