[英]Iterate through specific tags in python
我想从网站中提取文本,格式如下:
<a href="#N44">Avalon</a>
<a href="#N36">Avondale</a>
<a href="#N4">Bacon Park Area</a>
我如何只 select 那些带有 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
提前致谢!
您正在迭代这些项目,但没有将它们放在任何地方。 因此,当您完成循环后, 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
表示数字, +
表示一个或多个实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.