簡體   English   中英

scrapy xpath:獲取元素內的所有內部文本

[英]scrapy xpath : get all the inner text inside an element

我正在嘗試獲取 span 標簽內的所有文本。 但是我得到的不是 2 個元素,而是 4 個。

<div class="col-sm-6 col-md-7">
  <ul>
    <li>
      <span style="font-family: Verdana, sans-serif; font-size: 10pt;" class="text-black">
        Minimum 2 years of experience developing mobile/web applications using 
        <b>Ionic-3, Ionic-4, AngularJS, Angular.</b>
        <p></p>
      </span>
    </li>
    <li>
      <span style="font-family: Verdana, sans-serif; font-size: 10pt;" class="text-black">
        Experience with Agile
        <b>(SCRUM, Kanban)</b>
        <p></p>
      </span>
    </li>
  </ul>
</div>

我解析HTML的scrapy代碼是

response.xpath(".//div[@class='col-sm-6 col-md-7']//ul/li//span//text()")

我的預期輸出是:

["Minimum 2 years of experience developing mobile/web applications using Ionic-3, Ionic-4, AngularJS, Angular.","Experience with Agile (SCRUM, Kanban)"]

但我得到了這個:

["Minimum 2 years of experience developing mobile/web applications using", "Ionic-3, Ionic-4, AngularJS, Angular.","Experience with Agile", "(SCRUM, Kanban)"]

發生這種情況是因為文本數據由<b>標簽分隔。

在您的情況下需要以下步驟:

data = []
# separately select span tags:
for span_tag in response.xpath(".//div[@class='col-sm-6 col-md-7']//ul/li//span"):
# for each span tag add it's text as single string:
    data.append("".join(span_tag.xpath("//text()").extract()))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM