首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >scrapy xpath :获取元素中的所有内部文本

scrapy xpath :获取元素中的所有内部文本
EN

Stack Overflow用户
提问于 2020-09-06 17:04:12
回答 1查看 167关注 0票数 0

我正在尝试获取span标记内的所有文本。但是我得到的不是2个元素,而是4个元素。

代码语言:javascript
复制
<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的简陋代码是

代码语言:javascript
复制
response.xpath(".//div[@class='col-sm-6 col-md-7']//ul/li//span//text()")

我的预期输出是:

代码语言:javascript
复制
["Minimum 2 years of experience developing mobile/web applications using Ionic-3, Ionic-4, AngularJS, Angular.","Experience with Agile (SCRUM, Kanban)"]

但我得到的是:

代码语言:javascript
复制
["Minimum 2 years of experience developing mobile/web applications using", "Ionic-3, Ionic-4, AngularJS, Angular.","Experience with Agile", "(SCRUM, Kanban)"]
EN

回答 1

Stack Overflow用户

发布于 2020-09-06 17:33:01

这是因为文本数据由<b>标签分隔。

在您的情况下,需要执行以下步骤:

代码语言:javascript
复制
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()))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63762450

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档