爬虫之CSS语法学习

carrt / 2024-11-11 / 原文

属性选择器用于根据 HTML 元素的属性和值来选择元素。不同的属性选择器语法适用于各种匹配需求。让我们逐一解释每种语法,并给出相应的例子:

1. [attr]

  • 选择具有指定属性的所有元素,不考虑属性值。
  • 语法[attr]
  • 例子:选择所有有 name 属性的元素。
    <input type="text" name="username">
    <input type="password" name="password">
    <input type="submit">
    
    CSS 选择器[name]
    • 这个选择器会选择第一个和第二个 <input>,因为它们有 name 属性。

2. [attr=value]

  • 选择具有指定属性,且属性值等于指定值的元素。
  • 语法[attr=value]
  • 例子:选择 name="username" 的元素。
    <input type="text" name="username">
    <input type="password" name="password">
    
    CSS 选择器[name="username"]
    • 这个选择器会选择第一个 <input>,因为它的 name 属性等于 "username"

3. [attr~=value]

  • 选择具有指定属性,且属性值包含一个以空格分隔的列表,其中至少有一个值等于指定值的元素(类似于 class 属性匹配)。
  • 语法[attr~=value]
  • 例子:选择 class 属性中包含 btn 的元素。
    <button class="btn primary">Submit</button>
    <button class="btn secondary">Cancel</button>
    
    CSS 选择器[class~="btn"]
    • 这个选择器会选择所有具有 btn 类的按钮。

4. [attr|=value]

  • 选择具有指定属性,且属性值是以指定值开头的,或者等于该值,值可以用连字符(-)后接其他内容。
  • 语法[attr|=value]
  • 例子:选择 lang="en" 或者 langen- 开头的元素。
    <html lang="en">
    <html lang="en-US">
    <html lang="fr">
    
    CSS 选择器[lang|="en"]
    • 这个选择器会选择前两个 <html> 标签,因为 lang 属性等于 "en" 或以 "en-" 开头。

5. [attr^=value]

  • 选择具有指定属性,且属性值以指定值开头的元素。
  • 语法[attr^=value]
  • 例子:选择 href 属性以 "https" 开头的链接。
    <a href="https://example.com">Link 1</a>
    <a href="http://example.com">Link 2</a>
    
    CSS 选择器[href^="https"]
    • 这个选择器会选择第一个 <a> 标签,因为它的 href"https" 开头。

6. [attr$=value]

  • 选择具有指定属性,且属性值以指定值结尾的元素。
  • 语法[attr$=value]
  • 例子:选择 src 属性以 .png 结尾的图片。
    <img src="image1.png">
    <img src="image2.jpg">
    
    CSS 选择器[src$=".png"]
    • 这个选择器会选择第一个 <img> 标签,因为 src.png 结尾。

7. [attr*=value]

  • 选择具有指定属性,且属性值包含指定值的元素。
  • 语法[attr*=value]
  • 例子:选择 href 属性中包含 example 的链接。
    <a href="https://example.com">Link 1</a>
    <a href="https://anotherexample.com">Link 2</a>
    <a href="https://somethingelse.com">Link 3</a>
    
    CSS 选择器[href*="example"]
    • 这个选择器会选择前两个 <a> 标签,因为它们的 href 属性中包含 "example"

总结

属性选择器使得我们可以根据 HTML 元素的属性及其值进行灵活、精确的选择,适用于不同的匹配需求:

  • [attr]:选择具有指定属性的元素。
  • [attr=value]:选择属性值完全等于指定值的元素。
  • [attr~=value]:选择属性值中包含指定值(通过空格分隔)的元素。
  • [attr|=value]:选择属性值以指定值开头或等于指定值的元素(通常用于语言或其他类似属性)。
  • [attr^=value]:选择属性值以指定值开头的元素。
  • [attr$=value]:选择属性值以指定值结尾的元素。
  • [attr*=value]:选择属性值包含指定值的元素。