尝试:
date = response.xpath('//*[@id="page_match_1_block_match_info_5"]/div[2]/div[2]/div[1]/dl/dd[2]/a/text()').get()
打印:None
date = response.xpath('//*[@id="page_match_1_block_match_info_5"]/div[2]/div[2]/div[1]/dl/dd[2]/a').get()
打印:<a href="/matches/2020/04/03/"><span class="timestamp" data-value="1585922400" data-format="d mmmm yyyy">3 April 2020</span></a>
但是我需要:3 April 2020
答案 0 :(得分:1)
您需要在Xpath Route text()中添加最终字符串。
根据您的具体情况,完成Xpath路由
'//[@id="page_match_1_block_match_info_5"]/div[2]/div[2]/div[1]/dl/dd[2]/a'
'...dd[2]/a/span/text()'
最终Xpath:
'// [@ id =“ page_match_1_block_match_info_5”] / div [2] / div [2] / div 1 / dl / dd [2] / a / span / text()'
示例:
假设您要从这组HTML标记中提取单词 HOME 。
HTML:
<nav class="main-nav mobileNav">
<ul>
<li class="page-collection active-link">
<a href="/">HOME</a>
</li>
<li class="index-collection">
<a href="/featuring">FEATURING</a>
</li>
<li class="page-collection">
<a href="/contact">CONTACT</a>
</li>
</ul>
</nav>
python的代码行:
# Both selectors (extract_first, get) will obtain the same result.
# Add the text() component as a final str. into the Xpath route.
response.xpath('//*[@class="main-nav mobileNav"]/ul/li/a/text()').extract_first()
response.xpath('//*[@class="main-nav mobileNav"]/ul/li/a/text()').get()
输出:
'HOME'
说明:
您需要在要访问的实际节点内找到一个文本类型的节点。
<a href="/">HOME</a>
那是您获取文本内容之前要访问的最后一个节点。在最后一个Xpath路由中添加text()
'../a/text()'
将导致文本包含标签。
'HOME'