遍历python中的特定标签

时间:2020-05-06 22:58:02

标签: python

我想从网站中提取文本,格式如下:

<a href="#N44">Avalon</a>
<a href="#N36">Avondale</a>
<a href="#N4">Bacon Park Area</a>

由于还有更多标签,我该如何选择带有href =“#N”的'a'标签?

我尝试创建一个列表进行迭代,但是当我尝试代码时,它仅选择一个元素。

loc= ['#N0', '#N1', '#N2', '#N3', '#N4', '#N5'.....'#N100']

for i in loc:
    name=soup.find('a', attrs={'href':i})    
print(name)

我明白了

<a href="#N44">Avalon</a>

不是

<a href="#N44">Avalon</a>
<a href="#N36">Avondale</a>
<a href="#N4">Bacon Park Area</a

那怎么样?

Avalon
Avondale
Bacon Park Area

谢谢!

1 个答案:

答案 0 :(得分:1)

您要遍历所有项目,但不能将它们放在任何地方。因此,完成循环后,name中剩下的就是最后一项。

您可以将它们放在如下所示的列表中,并访问.text属性以从标记中获取名称:

names = []

for i in loc:
    names.append(soup.find('a',attrs={'href':i}).text) 

结果:

In [15]: names
Out[15]: ['Bacon Park Area', 'Avondale', 'Avalon']

如果您想省略第一个列表的创建内容,则可以执行以下操作:

import re

names = [tag.text for tag in soup.find_all('a',href=re.compile(r'#N\d+'))] 

在正则表达式中,\d表示数字,而+表示一个或多个实例。

相关问题