• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python爬虫学习笔记之pyquery模块基本用法详解

python 搞代码 4年前 (2022-01-08) 26次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要介绍了python爬虫学习笔记之pyquery模块基本用法,结合实例形式详细分析了python爬虫pyquery模块基本功能、用法及操作注意事项,需要的朋友可以参考下

本文实例讲述了python爬虫学习笔记之pyquery模块基本用法。分享给大家供大家参考,具体如下:

相关内容:

  • pyquery的介绍
  • pyquery的使用
    • 安装模块
    • 导入模块
    • 解析对象初始化
    • css选择器
    • 在选定元素之后来源gaodai#ma#com搞*!代#%^码网的元素再选取
    • 元素的文本、属性等内容的获取
  • pyquery执行DOM操作、css操作
    • Dom操作
    • CSS操作
  • 一个利用pyquery爬取豆瓣新书的例子

首发时间:2018-03-09 21:26


pyquery的介绍

  • pyquery允许对xml、html文档进行jQuery查询。
  • pyquery使用lxml进行快速xml和html操作。
  • pyquery是python中的jquery

PyQuery的使用:

1.安装模块:

 pip3 install pyquery

2.导入模块:

 from pyquery import PyQuery as pq

3.解析对象初始化:

【使用PyQuery初始化解析对象,PyQuery是一个类,直接将要解析的对象作为参数传入即可

  • 解析对象为字符串时字符串初始化 :默认情况下是字符串,如果字符串是一个带http\https前缀的,将会认为是一个url
     textParse = pq(html)
  • 解析对象为网页时url初始化: 建议使用关键字参数url=
     # urlParse = pq('http://www.baidu.com') #1 urlParse = pq(url='http://www.baidu.com') #2
  • 解析对象为文件时文件初始化:建议使用关键字参数filename=
     fileParse = pq(filename="L:\demo.html")
  • 解析完毕后,就可以使用相关函数或变量来进行筛选,可以使用css等来筛选,

4.CSS选择器:

  • 利用标签获取:
     result = textParse('h2').text()
  • 利用类选择器:
     result3=textParse(".p1").text()
  • 利用id选择:
     result4=textParse("#user").attr("type")
  • 分组选择:
     result5=textParse("p,div").text()
  • 后代选择器:
     result6=textParse("div a").attr.href
  • 属性选择器:
     result7=textParse("[class='p1']").text()
  • CSS3伪类选择器:
     result8=textParse("p:last").text()

(更多的,可以参考css)

5.在选定元素之后的元素再选取:

  • find():找出指定子元素 ,find可以有参数,该参数可以是任何 jQuery 选择器的语法,
  • filter():对结果进行过滤,找出指定元素 ,filter可以有参数,该参数可以是任何 jQuery 选择器的语法,
  • children():获取所有子元素,可以有参数,该参数可以是任何 jQuery 选择器的语法,
  • parent():获取父元素,可以有参数,该参数可以是任何 jQuery 选择器的语法,
  • parents():获取祖先元素,可以有参数,该参数可以是任何 jQuery 选择器的语法,
  • siblings():获取兄弟元素,可以有参数,该参数可以是任何 jQuery 选择器的语法,
 from pyquery import PyQuery as pq html="""    <h2>This is a heading</h2><p class="p1">This is a paragraph.</p><p class="p2">This is another paragraph.</p><div> 123 </div> """ ###初始化 textParse = pq(html) # urlParse = pq('http://www.baidu.com') #1 # urlParse = pq(url='http://www.baidu.com') #2 # fileParse = pq(filename="L:\demo.html") ##获取 result = textParse('h2').text() print(result) result2= textParse('div').html() print(result2) result3=textParse(".p1").text() print(result3) result4=textParse("#user").attr("type") print(result4) result5=textParse("p,div").text() print(result5) result6=textParse("div a").attr.href print(result6) result7=textParse("[class='p1']").text() print(result7) result8=textParse("p:last").text() print(result8) result9=textParse("div").find("a").text() print(result9) result12=textParse("p").filter(".p1").text() print(result12) result10=textParse("div").children() print(result10) result11=textParse("a").parent() print(result11)

6.元素的文本、属性等内容的获取:

attr(attribute):获取属性

 result2=textParse("a").attr("href")

attr.xxxx:获取属性xxxx

 result21=textParse("a").attr.href result22=textParse("a").attr.class_

text():获取文本,子元素中也仅仅返回文本

 result1=textParse("a").text()

html():获取html,功能与text类似,但返回html标签

 result3=textParse("div").html()

补充1:

元素的迭代:如果返回的结果是多个元素,如果想迭代出每个元素,可以使用items():

补充2:pyquery是jquery的python化,语法基本都是相通的,想了解更多,可以参考jquery。


pyquery执行DOM操作、css操作:

DOM操作:

add_class():增加class

remove_class():移除class

remove():删除指定元素

 from pyquery import PyQuery as pq html="""    <h2>This is a heading</h2><p id="p1" class="p1">This is a paragraph.</p><p class="p2">This is another paragraph.</p><div style="color:blue"> 123 hello</div> """ textParse=pq(html) textParse('a').add_class("c1") print(textParse('a').attr("class")) textParse('a').remove_class("c1") print(textParse('a').attr("class")) print(textParse('div').html()) textParse('div').remove("a") print(textParse('div').html())

 

css操作:

  • attr():设置属性
    • 设置格式:attr(“属性名”,”属性值”)
  • css():设置css
    • 设置格式1:css(“css样式”,”样式值”)
    • 格式2:css({“样式1″:”样式值”,”样式2″:”样式值”})
 from pyquery import PyQuery as pq html="""    <h2>This is a heading</h2><p id="p1" class="p1">This is a paragraph.</p><p class="p2">This is another paragraph.</p><div style="color:blue"> 123 hello</div> """ textParse=pq(html) textParse('a').attr("name","hehe") print(textParse('a').attr("name")) textParse('a').css("color","white") textParse('a').css({"background-color":"black","postion":"fixed"}) print(textParse('a').attr("style"))

这些操作什么时候会被用到:

【有时候可能会将数据样式处理一下再存储下来,就需要用到,比如我获取下来的数据样式我不满意,可以自定义成我自己的格式】

【有时候需要逐层清理再筛选出指定结果,比如

123

中,如果仅仅想要获取123就可以先删除再获取】


一个利用pyquery爬取豆瓣新书的例子:

先使用审查元素,定位目标元素

确认爬取信息

要注意的是,豆瓣新书是有一些分在后面页的,实际上目标应该是li的上一级ul:

使用PyQuery筛选出结果:

 from pyquery import PyQuery as pq urlParse=pq(url="https://book.douban.com/") info=urlParse("div.carousel ul li div.info") file=open("demo.txt","w",encoding="utf8") for i in info.items(): title=i.find("div.title") author=i.find("span.author") abstract=i.find(".abstract") file.write("标题:"+title.text()+"\n") file.write("作者:"+author.text()+"\n") file.write("概要:"+abstract.text()+"\n") file.write("-----------------\n") print("\n") file.close()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

以上就是python爬虫学习笔记之pyquery模块基本用法详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python爬虫学习笔记之pyquery模块基本用法详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址