BeautifulSoup4
1.什么是BeautifulSoup4?
和 lxml 一样,Beautiful Soup 也是python的一个HTML/XML的解析器,用它可以方便的从网页中提取数据。
2.bs4在解析时依赖解析器?
解析器 使用方法 优势
Python标准库 BeautifulSoup(markup,'html.parser') Python的内置标准库、执行速度适中、文档容错能力强
lxml HTML解析器 BeautifulSoup(markup,'lxml') 速度快、文档容错能力强
3.使用
1)初始化
soup = BeautifulSoup(html文本,‘lxml’)
(2)findall()方法
name参数:可以根据节点名查询
attrs参数:可以根据节点属性查询
text参数:用来匹配节点文本
(3)CSS选择器
(4)获取属性
(列如获取标签属性)a.attrs[‘id’]或者啊a[‘id’]
(5)获取文本
a.get_text()或者a.string
Pyquery解析库
1.介绍
pyquery库是jQuery的python实现,能够以jQuery的语法来解析HTML文档,易用性和解析速度都挺好
2.安装
pip3 install pyquery
3.使用
(1)初始化
(1-1)传入html字符串
pq_html = pq("")
(1-2)pq_html = pq(filename = path_to_html_file)
(2).find():查找嵌套元素
(3).filter(selector):根据class,id筛选指定元素
(4).eq(index):根据索引号获取指定元素(index从0开始)
(5)pq_html(selector):通过css选择器来获取目标内容
(6).text()获取标签的文本
(7).attr('属性值’):获取标签属性
线程
1.使用模块
import threading
2.threading.Thread()
(1)target:线程要执行的目标函数
(2)name:线程名称
(3)args:传参数(元组)
(4)kwargs:传参数(字典)
3.start()方法 开启线程
4.join()方法 线程阻塞
5.daemon= False(后台线程,主线程结束不影响子线程运行)
6.daemon= True(前台线程,主线程结束子线程)
7.线程执行是无顺序的
8.线程资源是共享的
(1)保护资源,threading.Lock()添加了线程锁之后,保证同一时刻只能有一个线程在使用或修改资源
(2)注意避免死锁情况的发生
线程池
concurrent.futures import ThreadPoolExecutor
创建一个线程池
pool = ThreadPoolExecutor(max_workers=8)
往线程池中提交任务
fn(要执行的任务),*args(要传递的参数) Kwargs(要传递的参数)
result= pool.submit(cr)awlPageDate,url,name="1808"
给线程添加后调方法(add_done_callback添加的是方法名)
result.add_done_callback(done)