请教一下 scrapy 爬取数据不完整的问题

2019-07-06 14:17:44 +08:00
 studyaa

问题:爬取所获取到的数据是 json 格式的,但是每次爬取都会有几个链接获取到的 json 是不完整的,只获取到了一半左右,代码就会报一个这样的错(Unterminated string starting at: line 1 column 13042 (char 13041)).我就尝试把这报错的几个链接单独抓取,就不会出现这种不完整数据的情况.好奇怪. 发这部分链接的代码:

yield scrapy.Request(
                    url='http://www.lzxxxx.com/wspsp/wxs/find_FjztByClh?msg=%s&%s' % (int(round(time.time() * 1000)), href),#拼接的 url
                    callback=self.roomstate_item,
                    headers={'Referer': 'http://www.lzxxxx.com/wspsp/web/swb/list-xmxx.jsp'}#需要这个 referer 否则直接异常访问
                )

 def roomstate_item(self, response):
	try:
	    j = json.loads(response.text)
	    r_list = j.get('rows')
	    for r in r_list:
		roomstateitem = RoomStateItem()
		roomstateitem['F1'] = r.get('zts')
		roomstateitem['roomid'] = r.get('id')
		yield roomstateitem
	except Exception as e:
	    self.logger.info(e)
	    self.logger.info(response.url)
	    self.logger.info(response.text)
	    with open('bbb.txt','w') as f:
		f.write(response.text)

这是拿到的不完整数据有头没尾的(太多了删了一部分中间的数据,都是这格式):

{"rows":[{"zts":"不可售","id":"B9E8973CD11F4F93B61619FA4221451C","fwbm":"2501201703203002-101"},{"zts":"可售","id":"34D2AC4934BA49C6A22922EC255F521D","fwbm":"2501201703203002101"},{"zts":"已售","id":"911BAA3C7FFF4FC0B751E0A3A10EF266","fwbm":"2501201703203002102"},{"zts":"已售","id":"0F9DC02CC0DB419188525A844D8D0AE0","fwbm":"2501201703203002705"},{"zts":"已售","id":"B06CF

希望给点可用的建议

2327 次点击
所在节点    问与答
2 条回复
qianyin123
2019-07-08 11:27:24 +08:00
多粘点报错代码
studyaa
2019-07-08 16:24:36 +08:00
@qianyin123 json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 13042 (char 13041)就这个错啊 json 数据不完整导致的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/580576

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX