xpath怎么提取相同标签下的某一内容

网页源


<div class="fl name">

          <ul>

<li>

<span>郝振平教授</span>

<span>清华大学</span><span>经济管理学院会计</span>

</li>

<li><span class="ri-tag fl" data-start="2018-03-05 00:00:00+00:00" data-end="2018-06-15 15:30:00+00:00"

data-enrollment-start="2018-01-23 16:00:00+00:00" data-enrollment-end="2018-06-15 15:30:00+00:00"><b class="list-icon">$</b></span></li>

<li><span class="ri-tag fl"><b class="list-icon">g</b>5.5万人</span></li>

<li><span class="ri-tag fl"><b class="list-icon">7</b>已更新至第10章</span></li>

</ul>

</div>

</div>

<div class="txt_all">

<p class="txt"><span class="courseintro">简介</span>


我要分别提取清华大学和5.5万人
最初我直接设置:
item["school"]=response.xpath("//div[@class='fl name']/ul/li/span/text()").extract()
结果是:


郝振平教授
清华大学
经济管理学院会计
5.5万人
已更新至第10章


由此肯推测提取了这里面所有的内容,
然后:提取学校的xpath改成:(加了一个下标)
item["school"]=response.xpath("//div[@class='fl name']/ul/li/span[2]/text()").extract()
得到正确的结果即清华大学;
然后提取5.5万人这个数据时,怎么设置规则都提取不到,主要是5.5万人数据附近标签都是相同的,我向上面添加下标也没用,这个该怎么设置才能单独提取人数这个数据啊?

回答:

google应用商店下载一个chrome插件xpath拾取器
图片描述

回答:

xpath("//div[@class='fl name']/ul/li[3]/span[1]/text()")

试试?

回答:

我能直接点获得结果吗

html = '''

<div class="fl name">

<ul>

<li>

<span>郝振平教授</span>

<span>清华大学</span><span>经济管理学院会计</span>

</li>

<li><span class="ri-tag fl" data-start="2018-03-05 00:00:00+00:00" data-end="2018-06-15 15:30:00+00:00"

data-enrollment-start="2018-01-23 16:00:00+00:00" data-enrollment-end="2018-06-15 15:30:00+00:00"><b class="list-icon">$</b></span></li>

<li><span class="ri-tag fl"><b class="list-icon">g</b>5.5万人</span></li>

<li><span class="ri-tag fl"><b class="list-icon">7</b>已更新至第10章</span></li>

</ul>

</div>

</div>

<div class="txt_all">

<p class="txt"><span class="courseintro">简介</span>

'''

import re

reg_fl_name = re.compile(r'<div class="fl name">(.+?)</div>', re.S)

reg_span = re.compile(r'<span\s*.*?[b]*\s*>([\w\.]+?)</span>', re.S)

p = reg_fl_name.search(html)

if p:

fl_name = p.group(1)

print(reg_span.findall(fl_name))

以上是 xpath怎么提取相同标签下的某一内容 的全部内容, 来源链接: utcz.com/a/163804.html

回到顶部