我在使用scrapy提取一组特定数据时遇到问题。
这是我要提取的示例代码。
<div class="Person">
<span>Name:</span>
Jason
<span>Last Name:</span>
Terry
</div
我只想提取“特里”。
我知道如何通过索引在div类中进行搜索来获取“ Terry”,但是问题是索引号是硬编码的,当您进入下一页时,其他人的“姓氏”可能不会在同一索引中。
因此,我没有尝试搜索索引,而是尝试搜索包含“姓氏”的跨度,但是每次这样做,我都会得到整个内容的返回。
我的意思是
杰森 特里
但是我只想要'Terry'
答案 0 :(得分:1)
您尝试过这个xpath吗? //span[contains(.,'Last Name')]/following-sibling::text()
应该在span元素之后返回包含Last Name
文本的文本
from scrapy.selector import Selector
html_text = """<div class="Person">\n <span>Name:</span>\n Jason\n <span>Last Name:</span>\n Terry\n</div>"""
Selector(text=html_text).xpath("//span[contains(.,'Last Name')]/following-sibling::text()").get()
结果:
u'\n Terry\n'
答案 1 :(得分:0)
您可以显示您的代码吗 并尝试使用此xpath:
response.xpath('//*[@class="Person"]/text()').extract()[2]