【发布时间】:2019-12-13 06:19:37
【问题描述】:
我一直在尝试学习正则表达式,但又一次陷入困境。
我要抓取的是以下值:
var preloadedItems = [
{
"id": "8971",
"permalink": "https://www.randomsite1.com"
},
{
"id": "8943",
"permalink": "https://www.randomsit2e.com"
},
{
"id": "8944",
"permalink": "https://www.randoms3ite.com"
},
{
"id": "8950",
"permalink": "https://www.random4site.com"
},
{
"id": "8910",
"permalink": "https://www.random5site.com"
},
{
"id": "8915",
"permalink": "https://www.rando6msite.com"
}
];
#代码比较长,这里就不贴了。
我通过做得到的
p = re.compile(r'var preloadedItems = \[(.*?)\];', re.DOTALL)
data = p.findall(req.text)[0]
它返回我发布的 json 的全部值。但是我只想将所有永久链接刮到一个列表中,我尝试这样做
p = re.compile(r'var preloadedItems = \[(.*?)\];', re.DOTALL)
data = json.loads(p.findall(r.text)[0]).items()
但我确实收到Extra data: line 1 column 2657 (char 2656) 的错误
我想知道如何将所有永久链接抓取到一个列表中?
更新:
我的想法是首先使用正则表达式刮取 json 值,以便以后能够将其用作 json.loads(regexValue) - 这意味着我使用正则表达式来获取值 Regexjson = {....},然后使用 json。加载(正则表达式)...
【问题讨论】:
-
你想匹配什么?那个 json 中没有
var preloadedItems,你为什么要json.loadsing 一个正则表达式 findall 结果? -
哇!我忘了加上那个哎哟!将立即添加
-
Regex 不适用于此类情况,只需使用 JSON 解析器并获取值
-
嗯,但我确实需要先抓取该值,然后将其用作 JSON 解析器?不?我的计划是使用正则表达式来抓取 JSON 值,然后使用 JSON Parser。
-
@Thrillofit86 您的编辑使问题与以前大不相同。您是否正在尝试抓取 JavaScript 文件?