爬虫 day 06 lxml和多线程

爬虫 day 06 lxml和多线程

lxml

使用需要先导包

from lxml import etree

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

b.属性相关谓语

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

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

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

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

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

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

路径1|路径2

多线程

进程和线程

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

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

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

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

from threading import Thread

1.创建子线程对象

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值