lxml 只会局部遍历而Beautiful Soup 是基於HTML DOM的,会载入整个文档解析整个DOM树,因此时间和内存开销都会大很多所以性能要低于lxml。
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
Tag 通俗点讲就是 HTML 中的一个个标签例如:
(3)通过 id 名查找组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的例如查找 p 标签中,id 等于 link1的内容二者需要用空格分开
一个CPU一次只能执行一个进程其他进程处于非运行狀态
进程里面包含的执行单位叫线程,一个进程包含多个线程
一个进程里面的内存空间是共享的里面的线程都可以使用这个内存空间
一個线程在使用这个共享空间时,其他线程必须等他结束(通过加锁实现)
锁的作用:防止多个线程同时用这块共享的内存空间先使用的線程会上一把锁,其他线程想要用的话就要等他用完才可以进去
python的多线程很鸡肋所以scrapy框架用的是协程
python多进程适用于:大量密集的并行计算python多线程适用于:大量密集的I/O操作