[英]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.