2013-10-24 78 views
2
from bs4 import BeautifulSoup 

source_code = """<a href="#" name="One"></a> 
       <a href="#" name="Two"></a>""" 

soup = BeautifulSoup(source_code) 

print soup.a['name'] #prints 'One' 

使用BeautifulSoup,我可以抓住的第一个名字属性,是one,但我不知道我怎么可以打印第二,这是Two获得“名”与美丽的汤属性

任何人都能够帮帮我?

回答

5

您应该阅读the documentation。您可以看到soup.find_all返回一个列表 ,因此您可以遍历该列表,并为每个元素提取您正在查找的标记。所以,你应该这样做(这里未测试):

from bs4 import BeautifulSoup 
soup = BeautifulSoup(source_code) 
for item in soup.find_all('a'): 
    print item['name'] 
1

要获得除第一个以外的任何a子元素,请使用find_all。对于第二a标签:

print soup.find_all('a', recursive=False)[1]['name'] 

为了保持在同一水平上,避免了深刻的搜索,传递参数:recursive=False

+0

感谢堆! – vjgaero

+0

如果我用INPUT而不是A来尝试这个,我会得到一个超出范围的错误。 这是为什么? – vjgaero

+0

Upvote for recursive = False。很高兴知道。 – Josh

1

这会给你“一”的所有标签:

>>> from BeautifulSoup import BeautifulSoup 
>>> aTags = BeautifulSoup(source_code).findAll('a') 
>>> for tag in aTags: print tag["name"] 
... 
One 
Two 
+0

@vjgaero如果它对你有用,请通过[接受](http://stackoverflow.com/help/accepted-answer)来回答问题。 – Sudipta