$,^和*符号在python 2.7和BS4中做了什么

时间:2013-01-05 12:28:53

标签: python python-2.7 beautifulsoup

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>]

2 个答案:

答案 0 :(得分:7)

那些是substring matching attribute selectors adapted from CSS 3

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

在你的情况下:

  • a[href="http://example.com/elsie"]选择a属性值等于href的任何http://example.com/elsie元素。
  • a[href^="http://example.com/"]选择a属性值以href开头的任何http://example.com/元素。
  • a[href$="tillie"]选择a属性值以href结尾的任何tillie元素。
  • a[href*=".com/el"]选择a属性值包含href的任何.com/el元素。

答案 1 :(得分:3)

你看到的是CSS选择器:

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