Python-爬虫-解析库(pyquery)的使用
pyquery安装:
pip install pyquery
初始化:
1)html字符串 2)url初始化 3)本地html文件初始化
例如:
1 #pyquery使用 2 3 import requests 4 from lxml import html 5 import pyquery 6 html=""" 7 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 8 <html> 9 <head> 10 <title>第一个HTML页面</title> 11 <style type="text/css"> 12 body{ 13 margin:0px;padding:0px; 14 background:url('4.jpg') no-repeat fixed center; 15 background-color:#000; 16 } 17 div{ 18 border:solid 15px #fff; 19 border-style:groove; 20 width:500px; 21 height:500px; 22 color:#fff; 23 margin:0 auto;/*让该标签在父容器中居中,但是注意:必须在该HTML中引入头文件,才生效*/ 24 font-size:14px; 25 } 26 27 h2{ 28 text-align:center; 29 font-size:30px; 30 border:solid 1px blue; 31 } 32 p{ 33 line-height:24px; 34 text-indent:24px; 35 } 36 .img{width:120px;height:200px;} 37 </style> 38 </head> 39 <body> 40 <div> 41 <h2 class="title">什么是青春</h2> 42 <p> 43 2010年大专毕业,各种原因,频繁换工作, 44 简历上能写的经验只有一年维护,女友看我这个现状分手,<image src="./abc.jpg" alt='图标ALT' title="图标Title"/><span>qq<label>[哈哈]</label>qq </span> 45 去年打算考研,结果玩了一年,今年继续没工作考研,压力空前。 46 这三年,一步错步步错,没有坚定的方向,如今25岁才意识到,<span>第二个span</span> 47 人最可悲的就是不知自己想要什么喜欢什么想做什么,没女人没朋友没工作性格内向没背景 48 考研复习进度也很慢,可能是情绪关系一直看不进去,别人都第二轮了,我还刚开始, 49 每天失眠睡不着躲在被子里哭,<image class="img" src="./abc.jpg" alt='图标ALT2' title="图标Title"/> 50 也不知道该怎么办,每天连个说话的人也没有,商量的人也没, 51 抑郁的经常想去死打算九月份一个人去上海从零开始找程序员的工作,还要兼顾考研,读两三年毕业就29了 52 ,这时候怎么办,. 53 </p> 54 <p> 55 我也不知道怎么办呢! 56 </p> 57 <!--margin:10px 40px;/*两个参数:第一个:上下,第二个:左右*/ 58 /*如果有四个参数值:顺序为上右下左*/--> 59 </div> 60 61 """ 62 if __name__=="__main__": 63 #html字符串进行初始化PyQuery 64 py=pyquery.PyQuery(html) #初始化PyQuery 65 print(py('span').text())#获取span标签文本 66 67 #url进行初始化PyQuery 68 py=pyquery.PyQuery(url='https://www.baidu.com/') 69 print(py('title').text().encode('iso-8859-1').decode('utf-8')) 70 71 #将请求html文本初始化PyQuery 72 py=pyquery.PyQuery(requests.get('https://www.baidu.com/').text) 73 print(py('title').text().encode('iso-8859-1').decode('utf-8')) 74 75 #传本地文件初始化[可能出现UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 1499: illegal multibyte sequence] 76 #这里个人认为可以忽略,后期几乎不会出现解析本地html文件 77 py=pyquery.PyQuery(filename='D:/1.html') 78 print(py('title').text())
css选择器和find方法查找:
#基本css选择器 # html字符串进行初始化PyQuery py = pyquery.PyQuery(html) # 初始化PyQuery print(py('span').text()) # 获取span标签文本 print(py('div .title').text()) #find()查找 print(py.find("div .title").text()) print(py.find("div").find('.title').text()) print(py.find("h2[class='title']").text())
获取子节点children('选择器')和相关标签属性:【 获取父节点parent()parents(“选择器”) 用法类似,此处略 】
#获取子节点以及相关属性 items=py.find("div").children() print(type(items)) print(items.children("span").children("label")) print(items.children("image").attr('src'))
其他:remove()、addClass(),removeClass()和伪类选择器,略;