python - 使用 beautifulsoup 从标签 <a> 获取字符串

标签 python python-2.7 beautifulsoup

我有这个美化html

         <a href="somepath">
          Text1
         </a>
         <span>
          |
         </span>
         <a href="somepath">
          Text2
         </a>
         <span>
          |
         </span>
         <a href="somepath">
          Text3
         </a>

我使用了这段代码:

cnta= len(res.findAll('a'))-1 //I used -1 because I have one extra a tag
cnt = 0
while cnt<cnta:
    res2 = res.find('a').text
    cnt+=1
    print res2

我想获取所有 3 个文本,但结果是 3 倍“Text1”...我知道我没有让任何人转到下一个,但我不知道该怎么做

最佳答案

直接循环 findAll 结果:

for elem in res.findAll('a'):
    print elem

.find() 方法仅返回它找到的 res 中的第一个元素,它不会从您找到的最后一个匹配项继续搜索。因此,每次运行循环时,它都会找到相同的元素。

如果要限制结果数量,请使用切片表示法:

for elem in res.findAll('a')[:3]:
    print elem

关于python - 使用 beautifulsoup 从标签 <a> 获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981551/

相关文章:

python - 多对多 Django sql

python - Django allauth 覆盖 clean_username 和 clean_email 函数

python - Tkinter 在显示之前设置 Toplevel 的几何形状

python - 使用 BeautifulSoup 查找具有特定子元素的元素

python - 来自 google 通过 BeautifulSoup 的确切网站链接

python - 仅在生产中自定义模板标签的受限属性

Python如何在字符串中每次有一大块数字时分割列

python - <slug> 路径转换器不起作用,但 URL 中的文字 <slug> 有效

python - 同一个 Python 模块的两个实例?

python - os.system 不将结果写入输出文件