在Scrapy中,如果字符串长度非常大,则extract_first()不会返回完整文本

时间:2019-02-27 17:05:06

标签: python json scrapy

我正在使用Scrapy抓取一个以字符串格式返回json类型文件的网站。

当我使用下面的选择器时,我将按预期在列表中获取完整的数据。

response.xpath('//p/text()').extract()

此列表中的数据是一个类似于json的字符串,我需要将其转换为我正在使用json.loads()的字典

但是当我使用以下选择器获取列表中存在的json之类的字符串时,就会发生问题。

response.xpath('//p/text()').extract_first()

这会给出部分截断的字符串as并输出,因此json.loads()给出了Unterminated string的错误。

注意:我尝试了类似的选择器,例如.extract()[0], getall()[0]等,都遇到了相同的问题。 同样,在打印时,它会打印出截断的部分字符串。

1 个答案:

答案 0 :(得分:1)

使用类似的XPath提取程序可能会弄乱数据。由于URL首先返回JSON,因此您只需将整个响应加载到JSON对象中即可。

import json
json_data = json.loads(response.text)

# Items are available in json_data['Table']

这是浏览器在其中看到的内容: JSON Fields