在解析过程中,我得到了包含json的文本对象响应。他们看起来都很像。其中一些工作没有任何错误。但其他人则抛出如下错误。
我试着用replace('\r\n', '')
和, strict=False.
都没有用。
这是我从-enter link description here获得json的URL
这是我的密码。(第51行是data=json.loads
)
另外,当我在scrapy shell中尝试这个url时,它会打开空的并抛出另一个错误-没有找到json文档。不知道这是否重要。
def parse_jsn(self, response):
#inspect_response(response, self)
data = json.loads(response.body_as_unicode())
item = response.meta['item']
item['text']= data[0]['bodyfull']
yield item
这是错误代码。
ValueError: Invalid \escape: line 4 column 942 (char 945)
2017-03-25 17:21:19 [scrapy.core.scraper] ERROR: Spider error processing <GET
or.com/UserReviewController?a=mobile&r=434622632> (referer: https://www.tripa
w-g60763-d122005-Reviews-or490-The_New_Yorker_A_Wyndham_Hotel-New_York_City_N
Traceback (most recent call last):
File "c:\python27\lib\site-packages\scrapy\utils\defer.py", line 102, in it
yield next(it)
File "c:\python27\lib\site-packages\scrapy\spidermiddlewares\offsite.py", l
der_output
for x in result:
File "c:\python27\lib\site-packages\scrapy\spidermiddlewares\referer.py", l
return (_set_referer(r) for r in result or ())
File "c:\python27\lib\site-packages\scrapy\spidermiddlewares\urllength.py",
return (r for r in result or () if _filter(r))
File "c:\python27\lib\site-packages\scrapy\spidermiddlewares\depth.py", lin
return (r for r in result or () if _filter(r))
File "C:\Code\Active\tripadvisor\tripadvisor\spiders\mtripad.py", line 51,
data = json.loads(response.body_as_unicode(), strict=False)
File "c:\python27\lib\json\__init__.py", line 352, in loads
return cls(encoding=encoding, **kw).decode(s)
File "c:\python27\lib\json\decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "c:\python27\lib\json\decoder.py", line 380, in raw_decode
obj, end = self.scan_once(s, idx)
ValueError: Invalid \escape: line 4 column 579 (char 582)
首先,+1用于删除移动API。比从HTML中抓取要聪明得多!
实际上编码有问题,有些八进制编码的字符(
[...] \074br/\076\074br/\076Best Regards,\074br/\076Emily [...]
)破坏了JSON解析。要摆脱它们,请使用:数据中还有一些编码的HTML字符:
"“Nice clean and perfectly average”"
。我建议把他们改头换面:在Python 3中:
结果应该是:
[{'title': '“Nice clean and perfectly average”', 'bodyfull': '[...] stay. <br/><br/>Best Regards,<br/>Emily Rodriguez", [...]}]
如您所见,结果中有一些HTML标记。如果要删除HTML标记,可以使用以下正则表达式:
相关问题 更多 >
编程相关推荐