3

在他们使用的Selenium Doc^中,$以及在下面代码中*的运算符之前=:但是没有一个解释为什么这些特殊符号

soup.select('a[href="http://example.com/elsie"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]

soup.select('a[href^="http://example.com/"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>,
#  <a class="sister" href="http://example.com/lacie" id="link2">Lacie</a>,
#  <a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

soup.select('a[href$="tillie"]')
# [<a class="sister" href="http://example.com/tillie" id="link3">Tillie</a>]

soup.select('a[href*=".com/el"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>]
4

2 回答 2

7

这些是改编自 CSS 3 的子字符串匹配属性选择器

  • =仅当给定值等于元素的属性值时才匹配。
  • ^=仅当给定值是元素属性值的前缀时才匹配。
  • $=仅当给定值是元素属性值的后缀时才匹配。
  • *=仅当给定值包含在元素的属性值中时才匹配。

在你的情况下:

  • a[href="http://example.com/elsie"]选择属性值等于a的任何元素。hrefhttp://example.com/elsie
  • a[href^="http://example.com/"]选择其属性值以 . 开头的任何a元素。hrefhttp://example.com/
  • a[href$="tillie"]选择其属性值以 . 结尾的任何a元素。hreftillie
  • a[href*=".com/el"]选择其属性值包含的任何a元素。href.com/el
于 2013-01-05T12:34:57.750 回答
3

你看到的是 CSS 选择器:

http://www.w3.org/TR/css3-selectors/#selectors

于 2013-01-05T12:34:31.147 回答