当前位置: 首页 > 科技观察

PyQuery解析网页使用介绍

时间:2023-03-13 19:33:16 科技观察

1.Pyquery安装在使用pyquery解析库之前,先简单介绍一下pyquery,然后说明如何安装pyquery库。pyquery的基本概念Pyquery也是一个强大的网页解析库,它支持对xml和html文档进行jQuery查询。安装pyquerypyquery的安装其实很简单。这里有两种不同的安装方法(针对不同的操作系统)。#方法一:pipinstallpipinstallpyquery#方法二:wheel安装#下载系统版本对应的wheel文件:http://www.lfd.uci.edu/~gohlke/pythonlibs/pipinstallpyquery-1.4.3-py3-non-any.whl方法一:安装比较简单,直接通过pipinstallpyquery命令安装即可;方法二:需要先下载whl文件,然后安装。它的下载链接是:http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml。进入这个链接后,找到pyquery-1.4.3-py3-none-any.whl并下载到本地。2.Pyquery的使用方法通过上述方法安装好pyquery后,我们开始导入pyquery,通过一个例子来了解一下pyquery的基本用法。先构造一段html源码,然后初始化为pyquery对象。完整代码如下:frompyqueryimportPyQueryaspqhtml='''

  • 1st
  • 2nd
  • 第三名第四名
  • 5th
'''py=pq(html)获取标签元素目标:比如我们需要获取html中的li标签#方法1print(py('li'))#方法2#注意后面的id前面需要加#,class前面需要加.print(py('#container.listli'))这里有两种获取方式,第一种方式比较简单,第二种方式定位比较准确。对于上面的html源码,两种方法得到的结果是一样的,结果如下:
  • 1st
  • 2nd
  • 第三第4个
  • 第5个
  • 查询子级标签元素目标:获取classaslistAllsub-ul标签下的tags(li标签),代码如下:items=py('.list')lis=items.children()print(lis)最后打印出来的结果同上,所有的li标签打印输出。查询父标签元素target:获取类为list的ul标签的上层标签(div标签),代码如下:items=py('.list')pa=items.parent()print(pa)打印输出结果:
    • 1st
    • 2nd
    • 第三第四
    • 5th
    获取元素信息目标:获取class为i0活动元素的a标签,并提取相关标签元素的信息a=py('.i0.activea')#标签内容print(a)#获取属性(两种方式)print(a.attr.href)print(a.attr('href'))#获取文本print(a.text())#获取标签中的源码print(a.html())result:3rdlink3.htmllink3.htmlThird第三3.实战:抓取关键字搜索的结果内容:抓取关键字搜索的小说网站查找结果,并在结果中收集小说的标题和链接。思路:首先在小说网站中搜索关键词:斗罗,然后在搜索返回的结果中使用爬虫抓取小说的标题和链接,在此过程中,使用pyquery分析网页源码,最后提取数据链接:http://book.chenlove.cn/search.html?keyword=Douluo在浏览器中访问链接:分析写前网页源码:查看源码,可以知道每本书的数据都在类bigpic-book-name的a标签中,先用pyquery解析a标签,然后循环遍历.完整代码如下:frompyqueryimportPyQueryaspqimportrequests#Setproxyserverheaders={'User_Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/89.0.4389.114Safari/537.36'}#请求连接url="http://book.chenlove.cn/search.html?keyword=斗罗"response=requests.get(url,headers=headers)ifresponse.status_code==200:#转换为utf-8格式,no添加这条语句,爬取到的信息会出现乱码。response.encoding='utf8'#将网页解析成pyquery对象py=pq(response.text)a_list=py('.bigpic-book-name').items()foriina_list:#获取书名print(i.text())#Getbooktitlelinkprint(i.attr('href'))上一节我们学习了如何提取a标签中的内容和链接,同样这里也使用text()和attr()解析内容和链接。结果:知行斗罗/novel/235.html从炸魂环开始的斗罗/novel/219.html斗罗之旅/novel/195.html斗罗的卡片BUG/novel/159.html终极斗罗/novel/54。html本文转载自微信公众号“Python研究员”,可通过以下二维码关注。转载本文请联系Python研究人员公众号。