如何在源代码(Xpath)中找到特定字符串并提取后续文本?

时间:2018-07-19 19:01:49

标签: python xpath web-scraping scrapy

从以下源代码中:

<html>
...
<div>.......</div>
<script bounce ="bla">....</script>
<div>.......</div>
.
.
n
.
<script bounce="foo">....],[null,"bla bla"]........</script>
.
.
.
</html>

我要提取(bla bla),它明确地位于(,[null,“)之后直到点(”]) 我无法通过脚本名称id和div进行搜索的原因是,对于我通过scrapy抓取的每个页面,它们都是动态的。因此,代码必须寻找(,[null,“)并提取后续文本。

2 个答案:

答案 0 :(得分:2)

您可以尝试查找脚本节点并使用XPath获取其文本:

node = html.select('//script[contains(., "[null,")]/text()').extract()

,然后提取所需的子字符串:

node.split("[null,")[-1].split("]")[0]

答案 1 :(得分:0)

value = response.xpath('//script[@bounce="foo"]/text()').re_first( r',\s*\[\s*null,\s*"([^"]+)' )

但是看起来您正在尝试在Javascript中解析某种JSON字符串,因此最好解析整个JSON,然后导航到您的字符串:

json_string = response.xpath('//script[@bounce="foo"]/text()').extract_first()
data = json.loads(json_string)

value = data[someindex][anotherindex][etc]