如何使用Beautiful Soup按属性值选择标签
我有以下这段HTML代码:
>>> a
<div class="headercolumn">
<h2>
<a class="results" data-name="result-name" href="/xxy> my text</a>
</h2>
我想要选择只有当属性data-name等于"result-name"的表头列。
我试过这样做:
>>> a.select('a["data-name="result-name""]')
这样做的结果是:
ValueError: Unsupported or invalid CSS selector:
我该怎么才能让它正常工作呢?
3 个回答
3
选择类或ID
soup.select('a.gamers') # select an `a` tag with the class gamers
soup.select('a#gamer') # select an `a` tag with the id gamer
选择单个属性:
soup.select('a[attr="value"]')
选择多个属性:
attr_dict = {
'attr1': 'val1',
'attr2': 'val2',
'attr3': 'val3'
}
soup.findAll('a', attr_dict)
你可以在 soup.select
中使用任何CSS选择器
11
你可以这样做:
soup = BeautifulSoup(html)
results = soup.findAll("a", {"data-name" : "result-name"})
4
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能会在使用某个特定的功能时,发现它的表现和预期不一样。这种情况可能会让人感到困惑,不知道该怎么解决。
通常,解决这类问题的第一步是仔细检查代码,看看有没有拼写错误或者逻辑上的问题。有时候,问题可能出在我们对工具的理解上,或者是我们没有按照正确的方式使用它。
此外,查看相关的文档或教程也是一个好主意,因为这些资料通常会提供使用方法和常见问题的解决方案。如果还是找不到答案,可以考虑在网上的编程社区发帖求助,像StackOverflow这样的地方,很多经验丰富的程序员会乐意提供帮助。
总之,遇到问题时,不要着急,慢慢分析,查找资料,通常都能找到解决办法。
html = """
<div class="headercolumn">
<h2>
<a class="results" data-name="result-name" href="/xxy> my text</a>
</h2>
"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
for d in soup.findAll("div",{"class":"headercolumn"}):
print d.a.get("data-name")
print d.select("a.results")
result-name
[<a class="results" data-name="result-name" href="/xxy> my text</a></h2>"></a>]