将元素转换为 python 中的 css 选择器

Convert element to css selector in python

我正在尝试转换以下元素:

@[width="300"]

我将 xpath 转换为:

//*[@width="300"]

给一个cssselect或者。因为如果我使用 lxml 运行:

selector = "@[width="300"]"
tree = lxml.html.fromstring(fparse(fileIn).to_string())
tree.cssselect(selector)

我收到以下错误:

Expected selector, got <DELIM '@' at 0>

如何在不使用 lxml 本身不包含的外部库的情况下转换它?我需要使用 cssselect 而不是 xpath,因为在其他情况下我的程序需要解析 select 或者如下所示:

@[width="300"] > p > a

您不需要 @ 用于 CSS 选择器中的属性定义:

[width="300"]

双引号对于这个特定值实际上是额外的(只要属性值是字母数字):

[width=300]