css-selector

尽量避免解析路径中包含位置信息

chrome页面中内置了Jquery环境, 用$符号来表示

  • 直接定位元素

    • 通过id进行定位

      $("#id值")
    • 通过class进行定位

      $(".class值")
    • 通过属性名进行定位

      $("标签名[属性名='属性值']")
      
      $("ul[class='gl-warp clearfix']")
  • 获取兄弟节点

    • 获取当前节点的下一个节点

      • dom提供的接口, 不属于css-selector语法

        tmp = $("li[data-sku='6039832']")[0]
        tmp.nextElementSibling
      • 通过css-selector(不建议)

        $("ul[class='gl-warp clearfix'] li:first-child + li")
    • 获取当前节点的上一个节点

      • dom提供的接口, 不属于css-selector语法

        tmp = $("li[data-sku='2136538']")[0]
        tmp.previousElementSibling
  • 获取父子节点

    • 获取父节点

      • dom提供的接口, 不属于css-selector语法

        tmp.parentElement
    • 获取子节点

      • 获取所有子节点

        • 遍历所有符合条件的元素

          $("ul[class='gl-warp clearfix'] div[class='gl-i-wrap']")
        • dom提供的接口, 不属于css-selector语法

          $("ul[class='gl-warp clearfix']")[0].children
      • 获取第一个子节点

        :fist-child
        $("ul[class='gl-warp clearfix'] li:first-child")[0]
      • 获取最后一个子节点

        :last-child
        $("ul[class='gl-warp clearfix'] li:last-child")[0]
      • 获取第N个子节点

        :nth-child(索引)
        $("ul[class='gl-warp clearfix'] li:nth-child(5)")[0]
  • 模糊匹配

    • 匹配开头

      ^

      # 匹配data-sku属性值为2开头的元素
      $("li[data-sku^='2']")
    • 匹配结尾

      $

      $("li[data-sku$='2']")
    • 匹配子集

      *

      $("li[data-sku*='2']")
  • 获取文本值

    $("li[data-sku='6039832'] div[class='p-name p-name-type-2'] em")[0].innerText
  • 获取属性值

    $("ul[class='gl-warp clearfix'] li")[0].getAttribute("data-sku")

BeautifulSoup

  • 安装

    pip install bs4
    pip install lxml
  • 使用BeautifulSoup

    from bs4 import BeautifulSoup
    
    
    def jd_search_parse(html):
        soup = BeautifulSoup(html, "lxml")
        item = soup.select("li[data-sku='6039832']")[0]
  • 直接定位元素

  • 去除空白字符

    html = html.replace('\r\n', "").replace("\n", "").replace("\t", "")
  • 获取兄弟节点

    • 获取上一个节点

      tmp_ele.previous_sibling
    • 获取下一个节点

      tmp_ele.next_sibling
  • 获取父子节点

    • 获取父节点

      tmp_ele.parent
    • 获取子节点

      tmp_ele.children
  • 模糊匹配

  • 获取文本值

    content = tmp_ele.text.strip()
  • 获取属性值

    value = tmp_ele.attrs["data-sku"]
Last modification:September 14, 2022
如果觉得我的文章对你有用,请随意赞赏