【问题标题】:Xpath to get text following labelXpath获取标签后的文本
【发布时间】:2014-01-14 15:28:59
【问题描述】:

我想根据它们的(前面的)<label> 属性获取项目,如下所示:

 <div>
      <ul>
          <li class="phone">
               <label>Mobile</label>
               312-999-0000
 <div>
      <ul>
          <li class="phone">
               <label>Home</label>
               312-999-0001

我想将第一个数字放在“移动”列/列表中,将第二个数字放在主页列表中。我目前有代码抓取它们,但我不知道获取标签的正确语法,因为它在源代码中。这是我现在使用的:

for target in targets:
    item = CrawlerItem()
    item['phonenumbers'] = target.xpath('div/ul/li[@class="phone"]/text()').extract()

我应该如何使用标签为 item['mobilephone'] 和 item['homephone'] 重写它?

【问题讨论】:

  • 只是一个评论,我强烈建议将电话号码放在一个元素中,而不是希望在事后出现文本。不同的浏览器可能会以不同的方式解释 DOM,并且可能会搞砸你的代码。

标签: python html python-2.7 xpath scrapy


【解决方案1】:

我在完成问题时找到了答案,并认为我应该分享它:

item['mobilephone'] = target.xpath('div/ul/li/label[contains (text(),"Mobile")]/following-sibling::text()').extract()
item['officephone']= target.xpath('div/ul/li/label[contains (text(),"Office")]/following-sibling::text()').extract()

【讨论】:

    猜你喜欢
    • 2017-01-09
    • 1970-01-01
    • 2013-03-16
    • 2019-07-20
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多