从以下源代码中:
<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,“)并提取后续文本。
答案 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]