• 爬虫 day 06 lxml和多线程


    爬虫 day 06 lxml和多线程

    lxml

    使用需要先导包

    from lxml import etree
    
    • 1

    1.xpath基本概念

    1)树:整个html(xml)代码结构就是一个树结构

    2)节点:树结构中每一个元素(标签)就是一个节点

    3)根节点(根元素):html或xml最外面的那个标签(元素),

    xml和json一样,是一种通用的数据格式

    xml是通过标签(元素)的标签内容和标签属性来保存数据的

    3.xpath语法

    1)创建树结构,获取树的根节点

    etree.XML(xml数据)

    etree.HTML(html数据)

    2)根据xpath获取指定标签

    节点对象.xpath(路径) -返回路径对应的所有的标签,返回值是列表,列表中的元素标签对象(节点对象)

    路径的写法:

    1.绝对路径:用’/'开头的路径 -/标签在树结构中的全路径,必须从根节点开始写

    2.相对路径:路径开头用.表示当前节点,..表示当前节点的上层节点,xpath前面谁,.就代表谁

    3.全路径:用’//'开头的路径 -在整个树结构中获取标签

    注意:绝对路径和全路径的写法,以及查找方法和x.xpath(路径)中的x无关

    3)获取标签内容

    节点对象.xpath(获取标签的路径/text()) -获取指定路径下的所有标签的标签内容

    4)获取标签属性值

    节点对象.xpath(获取标签的路径/@属性名)

    5)谓语(条件)

    a.位置相关谓语

    [N]-第N个

    [last()]-最后一个

    [last()-N] -最后一个减N个

    [position()>N],[position()=N],[position()<=N] --求多个元素,大于N的全部元素

    b.属性相关谓语

    [@属性名=属性值] -获取指定属性是指定值的标签

    [@属性名] -获取有指定属性名的标签

    c.子标签内容相关谓语 -根据子标签的内容筛选标签

    [子标签>数据],[子标签>=数据],[子标签<数据],[子标签<=数据],[子标签=数据]

    6)通配符 -写路径的时候用*来表示所有标签或属性

    7)若干路径 - 同时获取多个路径的内容

    路径1|路径2

    多线程

    进程和线程

    进程:一个正在运行的应用程序就是一个进程,每个进程均运行在其专门且受保护的内存空间中

    线程:线程是进程执行任务的基本单元

    线程的特点:如果在一个线程中执行多个任务的时候,时候是串行执行的

    多进程:一个进程中有多个线程就是多线程,多线程执行任务的时候,多个任务可以同时执行

    from threading import Thread
    
    • 1

    1.创建子线程对象

    线程对象=Thread(target=函数,args=元组)

    a.函数-可以是普通函数函数名,也可以是匿名函数.这个函数就是需要在子线程中执行的任务

    b.元组-元组中的元素就是调用函数的参数,函数需要几个参数,元组的元素就有几个,当只有一个元素的时候记得,.

    2.启动子线程 - 线程对象.statr()

  • 相关阅读:
    使用idea导入开发iuap2.0项目
    第二证券|小鹏持续萎靡,理想蔚来逆势反弹破月销记录
    视口坐标转换成Canvas下本地坐标与shader显示在3D物体前
    【Linux】权限管理与相关指令
    Springboot的日常操作技巧
    yapi文档转换jmx脚本
    史上最全Java面试题,Java面试必备
    HTML如何制作公司网站首页(web前端期末大作业)
    [附源码]java毕业设计线上图书销售管理系统
    用实例带你深入理解Java内存模型
  • 原文地址:https://blog.csdn.net/Feifei_peng/article/details/126412845