python – 仅当有两个类并且共享相同的第一个类时才选择元素

前端之家收集整理的这篇文章主要介绍了python – 仅当有两个类并且共享相同的第一个类时才选择元素前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在要解析的HTML中有这些元素:

如何创建一个CSS选择器,选择具有属性类行和类别的元素(可能是标题,文本或其他任何东西)但不仅仅属性类行?

我试过了:

 td[class=line.*]
 td.line.*
 td[class^=line.]

编辑

我正在使用Python和BeautifulSoup:

url = 'http://www.somewebsite'
res = requests.get(url)
res.raise_for_status()
DicoSoup = bs4.BeautifulSoup(res.text,"lxml")
elems = DicoSoup.select('body div#someid tr td.line')

我正在考虑修改最后一块,即td.line到类似td.line.whateverotherclass的东西(但不是单独的td.line,否则我的选择器已经足够)

最佳答案
什么@BoltClock suggested通常是用CSS选择器解决问题的正确方法.唯一的问题是BeautifulSoup supports a limited number of CSS selectors.例如,not() selector is :not(.supported) at the moment.

您可以使用“starts-with”选择器来解决它,以检查类是否以行后跟空格开头(它非常脆弱,但可以处理您的示例数据):

for td in soup.select("td[class^='line ']"):
    print(td.get_text(strip=True))

或者,您可以使用find_all()解决它并使用searching function检查class属性以获得行和其他类:

from bs4 import BeautifulSoup

data = """

打印:

I WANT THAT
I WANT THAT
原文链接:https://www.f2er.com/html/425534.html

猜你在找的HTML相关文章