pingfanren2 2021-03-23 22:38 采纳率: 80%
浏览 26
已采纳

python xpath对孙节点内容进行匹配问题

首先查看节点结构如下,需要获取节点summaryrecordstable下的所有后代节点中,具有数据值id=RECORD_[0-9]的节点

代码如下

import requests
from lxml import etree

url_base='https://apps.webofknowledge.com'
url_test='https://apps.webofknowledge.com/full_record.do?product=WOS&search_mode=GeneralSearch&qid=2&SID=6C4xx6Mer35kGYw4PU7&page=1&doc=50'
url_head={
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36 Edg/89.0.774.57'
}
session=requests.session();
res=session.get(url_test,headers=url_head)
res_html = etree.HTML(res.text)
url_cited_post=res_html.xpath('//a[@title="View all of the articles that cite this one"]/@href')#如果把@herf替换为text(),获取不到信息,因为a标签只有属性没有文本
print(url_cited_post[0])
url_allcited=url_base+url_cited_post[0]
res=session.get(url_allcited,headers=url_head)
res_html = etree.HTML(res.text)
# url_cited_post=res_html.xpath('//div[contains(@id,"RECORD_")]')
url_cited_post=res_html.xpath('//div[contains(@id,"summaryRecordsTable")]//div[contains(@id,"RECORD_")]')
print('end')

倒数第三行,井号注释哪一行可以正常输出,但是加上前缀后,如倒数第二行,就不能正常输出了,不知道是怎么回事

 

  • 写回答

1条回答 默认 最新

  • coagenth 2021-03-23 23:05
    关注

    用following定位,把前面设为顶节点,following后利用属性值再定位子孙节点。

    url_cited_post = res_html.xpath(

        './/div[contains(@id,"summaryRecordsTable")]//following::div[contains(@id,"RECORD_")]')

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探