我有一个使用python屏幕抓取框架的项目scrapy
。我创建了一个spider,它加载所有<script>
标记并处理第二个标记。这是因为在我收集的测试数据中,我需要的数据在第二个<script>
标记中。你知道吗
但是现在我遇到了一个问题,有些页面包含了我想要的其他脚本标记(#3或#4)中的数据。另一个障碍是,第二个javascript标记的第二行大部分都有我想要的JSON。但根据页面的不同,这也可能是第3行或第4行。你知道吗
考虑一下这个简单的HTML文件:
<html>
<head>
<title> Test </title>
</head>
<body>
<p>
This is a text
</p>
<script type="text/javascript">
var myJSON = {
a: "a",
b: 42
}
</script>
</body>
</html>
如果我在我的浏览器(firefox)中打开此页并转到开发人员工具和console.log(myJSON.b)
,我可以访问myJSON.b
并获取42
所以我的问题是:如何从一个零碎的页面中提取JavaScript变量或JSON?你知道吗
我以前也遇到过类似的问题,我通过使用(基于您的示例HTML文件)提取脚本标记中的文本来解决它:
response.xpath('//script/text()')
之后,我使用正则表达式以JSON格式提取所需的数据。因此,使用上面的选择器和您的示例HTML
接下来,您应该能够使用
json
库将数据作为python字典加载,如下所示:它应该返回类似于:
相关问题 更多 >
编程相关推荐