python网络爬虫:使用XPath进行网页解析

python网络爬虫:使用XPath进行网页解析

2023年6月29日发(作者:)

python⽹络爬⾍:使⽤XPath进⾏⽹页解析这⾥写⽬录标题python⽹络爬⾍使⽤XPath进⾏⽹页解析使⽤Xpath解析⽹页1. Xpath介绍XML路径语⾔(XML Path Language),它是⼀种基于XML的树状结构,在数据结构树中找寻节点,确定XML⽂档中某部分位置的语⾔。需要把源⽂件转成树状结构,再对树状结构应⽤相应的xpath查询语句基本语法使⽤Xpath需要从lxml库中导⼊etree模块,还需使⽤HTML类对需要匹配的HTML对象进⾏初始化(XPath只能处理⽂档的DOM表现形式)。HTML类的基本语法格式如下。(text, parser=None, *, base_url=None)参数:参数名称textparserbase_url说明接收str。表⽰需要转换为HTML的字符串。⽆默认值接收str。表⽰选择的HTML解析器。⽆默认值接收str。表⽰设置⽂档的原始URL,⽤于在查找外部实体的相对路径。默认为None2. 基本语法Xpath使⽤类似正则的表达式来匹配HTML⽂件中的内容,常⽤匹配表达式如下表达式nodename///.…@说明选取nodename节点的所有⼦节点从当前节点选取直接⼦节点从当前节点选取⼦孙节点选取当前节点选取当前节点的⽗节点选取属性3. 谓语Xpath中的谓语⽤来查找某个特定的节点或包含某个指定的值的节点,谓语被嵌在路径后的⽅括号中,如下。表达式/html/body/div[1]/html/body/div[last()]说明选取属于body⼦节点下的第⼀个div节点 (没有零从⼀开始)选取属于body⼦节点下的最后⼀个div节点/html/body/div[last()-1]表达式/html/body/div[positon()< 3]/html/body/div[@id]/html/body/div[@id=”content”]/html /body/div[xx>10.00]选取属于body⼦节点下的倒数第⼆个div节点说明选取属于body⼦节点下的下前两个div节点选取属于body⼦节点下的带有id属性的div节点选取属于body⼦节点下的id属性值为content的div节点选取属于body⼦节点下的xx元素值⼤于10的节点('/html/body/header/div/nav/ul/li')#查找该节点下所有元素('/html/body/header/div/nav/ul/li[1]')#查找该节点下第⼀个元素查找该字段('/html/body/header/div/nav/ul/li/a[@target="_blank"]')>>>[]提取内容('/html/body/header/div/nav/ul/li/a[@target="_blank"]/text()')>>>['认证证书']简化xpath查询语⾔省略/html/body直接查找根节点('//header/div/nav/ul/li')若某节点下的节点只出现了⼀次(可查询次数),也可简化('//*[@id="menu"]/li/a')#id="menu"只出现⼀次

3. 功能函数Xpath中还提供功能函数进⾏模糊搜索,有时对象仅掌握了其部分特征,当需要模糊搜索该类对象时,可使⽤功能函数来实现,具体函数如下。功能函数starts-withcontainsandtext()⽰例//div[starts-with(@id,”co”)]//div[contains(@id,”co”)]//div[contains(@id,”co”)andcontains(@id,”en”)]i[contains(text(),”first”)]说明选取id值以co开头的div节点选取id值包含co的div节点选取id值包含co和en的div节点选取节点⽂本包含first的div节点import requestsfrom lxml import etreeurl = '/'rqq = (url)html = (t,rser(encoding='utf-8'))('//*[@id="topwords"]/li/a[@title]/text()')>>>['丰⽥回应投资滴滴', '华为在美提起诉讼', '贝佐斯前妻捐赠', '移动推⾸批5G⼿机', '新iPod touch', '稀⼟反制', '阿⾥⾹港⼆次上市', '范冰冰⽆名指钻戒', '出⽣6天捐献器官', '⼴东暴⾬现龙吸⽔'][('//*[@id="topwords"]/li['+str(i)+']/a[@title]/text()') for i in range(1, 11)]>>>['丰⽥回应投资滴滴', '华为在美提起诉讼', '贝佐斯前妻捐赠', '移动推⾸批5G⼿机', '新iPod touch', '稀⼟反制', '阿⾥⾹港⼆次上市', '范冰冰⽆名指钻戒', '出⽣6天捐献器官', '⼴东暴⾬现龙吸⽔']可从开发者⼯具复制xpath节点

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687982588a63527.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信