【问题标题】:Get string from tag <a> using beautifulsoup使用 beautifulsoup 从标签 <a> 获取字符串
【发布时间】:2012-10-19 19:55:30
【问题描述】:

我有这个美化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”...我知道我没有说任何人去下一个但我不知道该怎么做

【问题讨论】:

    标签: python python-2.7 beautifulsoup


    【解决方案1】:

    直接循环findAll 结果:

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

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

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

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

    【讨论】:

    • 它可以工作,但我还有一个额外的“a”...我可以跳过最后一个“a”吗?
    • 已更新; findAll 返回一个列表,以便您对其进行切片。
    • 谢谢...对不起菜鸟问题,但我今天刚学了一些基本的python,不知道如何切片列表..再次感谢..
    • 如果只想忽略最后一个元素,res.findAll('a')[:-1] 会比计算长度并使用正切片更简单。
    • @Loclip:请参阅 Good Primer for Python Slice Notation 以获得良好的入门。
    猜你喜欢
    • 1970-01-01
    • 2019-08-12
    • 2016-04-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 2021-12-22
    相关资源
    最近更新 更多