zoukankan      html  css  js  c++  java
  • scrapy 选择器

    1.lxml(转自简书)

    1 from lxml import etree
    2 import requests
    3
    4
    5 url = " "
    6 html = requests.get(url)
    7 selector = etree.HTML(html.text)
    8 content_field = selector.xpath('//div[@class="lesson-list"]/ul/li')
    9 print(content_field)

    Element是XML处理的核心类,Element对象可以直观的理解为XML的节点,大部分XML节点的处理都是围绕该类进行的。这部分包括三个内容:节点的操作、节点属性的操作、节点内文本的操作。

    1节点操作

    1创建节点

    root = etree.Element("root")

    2获取节点名称

    print(root.tag)

    3输出xml内容

    print(root.tostring)

    ...

    2属性操作

    1创建属性

    可以在创建Element对象时同步创建属性,第二个参数即为属性名和属性值:

    root = etree.Element('root', interesting='totally')

    root.set('hello', 'Huhu')

    2获取属性

    属性是以key-value的方式存储的,就像字典一样

    print(root.get("interesting")

    >>>totally

    print(root.keys())

    >>>["interesting","hello"]

    3文本操作

    print(root.text)

    ...

    文件解析

    文件解析常用的有fromstring、XML和HTML三个方法。接受的参数都是字符串。

     1 >>> xml_data = '<root>data</root>'
     2 
     3 # fromstring方法
     4 >>> root1 = etree.fromstring(xml_data)
     5 >>> print(root1.tag)
     6 root
     7 >>> print(etree.tostring(root1))
     8 b'<root>data</root>'
     9 
    10 # XML方法,与fromstring方法基本一样
    11 >>> root2 = etree.XML(xml_data)
    12 >>> print(root2.tag)
    13 root
    14 >>> print(etree.tostring(root2))
    15 b'<root>data</root>'
    16 
    17 # HTML方法,如果没有<html>和<body>标签,会自动补上
    18 >>> root3 = etree.HTML(xml_data)
    19 >>> print(root3.tag)
    20 html
    21 >>> print(etree.tostring(root3))
    22 b'<html><body><root>data</root></body></html>'

    2.CSS和xpath

    目标CSS XPath
    所有元素 * //*
    所有的P元素 p //p
    所有的p元素的子元素 p  * //p/*
    根据ID获取元素 #foo //*[@id='foo']
    根据Class获取元素 .foo                                //*[contains(@class,'foo')] 1
    拥有某个属性的元素 [title] //*[@title]
    所有P元素的第一个子元素 p > *:first-child //p/*[0]

    所有拥有子元素a的P元素

    无法实现 //p[a]
    下一个兄弟元素 p + * //p/following-sibling::*[0]

    css 选择器:

    li a 选取所有li下的所有a节点

    li:nth-child(3)选取第三个li元素(从1开始)

    xpath:

    //p[1]

  • 相关阅读:
    页面可视化搭建 整理
    单页面应用(SPA)重新部署后,正在浏览的页面如何更新缓存?
    vim 使用
    浏览器缓存 知识点
    http 2.0 新特性
    GoJS 在 vue 项目中的使用
    详解Vue中watch的高级用法
    什么是 PWA?
    代码风格统一工具:EditorConfig 和 静态代码检查工具:ESLint
    vue-cli 3.x 使用
  • 原文地址:https://www.cnblogs.com/zenan/p/8287878.html
Copyright © 2011-2022 走看看