关于xpath网页解析神器的介绍
小编给大家分享一下关于xpath网页解析神器的介绍,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
使用XPath提取猫眼电影排行榜前100名。https://maoyan.com/board/4
XML介绍
XML称为可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。非常类似HTML。
HTML 和 XML的区别在于HTML主要用来显示数据,XML是用来传输数据。
XML都是标签闭合的。例如: … 成对出现。
<?xmlversion="1.0"encoding="utf-8"?><bookstore><bookcategory="奇幻"><title>冰与火之歌</title><author>乔治马丁</author><year>2005</year><price>365.00</price></book><bookcategory="童话"><title>哈利波特与死亡圣器</title><author>JK.罗琳</author><year>2005</year><price>48.98</price></book><bookcategory="编程"><title>Python编程-从入门到放弃</title><author>挖掘机小王子</author><year>2048</year><price>99.00</price></book><bookcategory="web"cover="paperback"><title>Python编程-从看懂到看开</title><author>尼古拉斯-赵四</author><year>2003</year><price>39.95</price></book></bookstore>
在上面的xml
语法中存在父子,先辈等关系。
XPath介绍
XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML/HTML 文档中对元素和属性进行遍历,并提取相应元素。
也是一种数据提取方式,只不过针对的是HTML/XML数据,因为爬虫主要和HTML页面打交道。
XPath匹配规则
下表是XPath常用的规则:
lxml库
lxml 是一个Python第三方模块。主要的功能是如何解析和提取 HTML/XML 数据。
lxml和正则类似,是一款高性能的 Python HTML/XML 解析器,我们可以利用之前学习的XPath语法,来快速的定位特定元素以及节点信息。
安装:pip install lxml
失败的话指定下载源用 pip install lxml -i https://pypi.douban.com/simple 豆瓣源
再安装 parsel 时会自动安装 lxml,这里就不需要再次安装了。
使用lxml模块
初始化生成一个XPath解析对象,同时可以自动补全残缺的HTML标签。传入网页源码。
fromlxmlimportetreestring="""<bookcategory="web"cover="paperback"><title>Python编程-从看懂到看开</title><author>Python编程</author><year>2003</year><price>39.95</price></book>"""#再解析之前必须先转化一下html=etree.HTML(string)#返回结果是列表result=html.xpath("//book[contains(@cover,'paper')]/title/text()")result=html.xpath("//book[4]/title/text()")print(result)
因为 parsel
对 lxml
进行了, 所以可以直接再 parsel 中无缝切换使用 xpath 。
使用XPath选取指定内容。括号里面书写XPath语法规则。返回列表。
#-*-coding:utf-8-*-importrequestsimportparselheaders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/77.0.3865.90Safari/537.36'}response=requests.get('https://maoyan.com/board/4?offset=0',headers=headers)html=response.text#%%选择任意节点sel=parsel.Selector(html)#提取p标签ps=sel.xpath('//p')forpinps:print(p.get())案例:XPath提取猫眼电影
'''猫眼电影:https://maoyan.com/board/4?offset=20函数式:1.获取(请求)一页的函数2.定义解析函数(解析一页)3.写入文件函数4.循环函数5.python学习交流群:695185429'''importjsonimportrequestsfromlxmlimportetree#获取响应defgetOnePage(url):'''获取一页的响应的函数'''response=requests.get(url)returnresponse.text#解析响应-->结果defparseOnePage(text):#初始化解析html=etree.HTML(text)#里面有所有的数据先选择上一层这一层里面包含所有数据然后循环遍历data=html.xpath('//dl[@class="board-wrapper"]')#遍历提取所有的元素fordatindata:print(dat)#继续选取#标题title=dat.xpath('.//div//a/text()')#主演star=dat.xpath('.//p[@class="star"]/text()')#时间releasetime=dat.xpath('//p[@class="releasetime"]/text()')fortit,sta,relinzip(title,star,releasetime):#在函数里面遇到return就终止#生成器yield{'电影名字':tit,'主演':sta.strip(),'上映时间':rel}defsave2File(data):#withopen('maoyan66.txt','a',encoding='utf-8')asfp:#fp.write(data+'\n')withopen('maoyan66.txt','a',encoding='utf-8')asfp:fp.write(json.dumps(data,ensure_ascii=False)+'\n')if__name__=="__main__":forpageinrange(10):#一页网址url=f'https://maoyan.com/board/4?offset={page*10}'#调用r=getOnePage(url)#解析数据返回生成器result=parseOnePage(r)forresinresult:#withopen('maoyan.txt','a',encoding='utf-8')asfp:##打印到文件#print(str(res),file=fp)save2File(str(res))
看完了这篇文章,相信你对关于xpath网页解析神器的介绍有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。