【问题标题】:Getting the href of <a> tag which is in <li>获取 <li> 中 <a> 标签的 href
【发布时间】:2017-06-04 08:55:29
【问题描述】:

如何获取给定代码中"Subforum"类下的所有标签的href?

<li class="subforum">
<a href="Link1">Link1 Text</a>
</li>
<li class="subforum">
<a href="Link2">Link2 Text</a>
</li>
<li class="subforum">
<a href="Link3">Link3 Text</a>
</li>

我已经尝试过这段代码,但显然它不起作用。

Bs = BeautifulSoup(requests.get(url).text,"lxml")
Class = Bs.findAll('li', {'class': 'subforum"'})
for Sub in Class:
    print(Link.get('href'))

【问题讨论】:

    标签: python web-scraping beautifulsoup html-parsing


    【解决方案1】:

    href属于a标签,不是li标签,使用li.a获取a标签

    文档:Navigating using tag names

    import bs4
    
    html = '''<li class="subforum">
     <a href="Link1">Link1 Text</a>
     </li>
     <li class="subforum">
    <a href="Link2">Link2 Text</a>
    </li>
    <li class="subforum">
    <a href="Link3">Link3 Text</a>
    </li>`<br>'''
    
    soup = bs4.BeautifulSoup(html, 'lxml')
    for li in soup.find_all(class_="subforum"):
        print(li.a.get('href'))
    

    出来:

    Link1
    Link2
    Link3
    

    为什么使用class_

    搜索具有特定CSS类的标签非常有用,但是CSS属性的名称class是Python中的保留字。使用class作为关键字参数会给你一个语法错误。从 Beautiful Soup 4.1.2 开始,你可以使用关键字参数 class_ 按 CSS 类搜索。

    【讨论】:

    • li.a.get,所以基本上这就像导航?
    • @Hashik Donthineni 是的,crummy.com/software/BeautifulSoup/bs4/doc/…
    • 你能详细说明一下吗?“class_”我的意思是我们通常使用类来选择类,对吧?是的,请继续关闭它,它就像魅力一样。
    【解决方案2】:

    您就快到了,您只需为您找到的每个 li 找到一个 a 元素:

    Class = Bs.findAll('li', {'class': 'subforum"'})
    for Sub in Class:
        print(Sub.find("a").get('href'))  # or Sub.a.get('href')
    

    但是,有一个更简单的方法 - CSS selector

    for a in Bs.select("li.subforum a"):
        print(a.get('href'))
    

    这里,li.subforum a 将匹配具有subforum 类属性的li 元素下的所有a 元素。

    附带说明,在BeautifulSoup 4 中,findAll() 被重命名为find_all()。而且,您应该关注Python general variable naming guidelines

    【讨论】:

    • 天哪,这两种方法都超级酷,伙计,非常感谢:)
    猜你喜欢
    • 2021-12-26
    • 2010-10-27
    • 1970-01-01
    • 2015-12-04
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    相关资源
    最近更新 更多