【发布时间】:2016-06-18 23:03:32
【问题描述】:
当我这样做时:
s = response.xpath('//meta[@id="_bootstrap-neighborhood_card"]').extract()
我得到的是:
<meta content='{"hosting":{"id":2256573,"offset_lat":39.04258923718809,"offset_lng":-95.69083697887662},"map_url":"https://maps.googleapis.com/maps/api/staticmap?markers=%2C&amp;size&amp;zoom=14","place_recommendations":[],"neighborhood_breadcrumb_details":[{"link_text":"Southwest Fillmore Street,","search_text":"Southwest Fillmore Street Topeka, KS","link":"&lt;span&gt;Southwest Fillmore Street,&lt;/span&gt;","link_route":"/s/Southwest-Fillmore-Street-Topeka--KS"},{"link_text":"Topeka,","search_text":"Topeka, KS","link":"&lt;span&gt;Topeka,&lt;/span&gt;","link_route":"/s/Topeka--KS"},{"link_text":"Kansas,","search_text":"Kansas, United States","link":"&lt;span&gt;Kansas,&lt;/span&gt;","link_route":"/s/Kansas--United-States"},{"link_text":"United States","search_text":"United States","link":"&lt;span&gt;United States&lt;/span&gt;","link_route":"/s/United-States"}],"neighborhood_basic_info":null,"neighborhood_localized_name":null,"user_info":{"user_image":"&lt;img alt=\"Elizabeth\" data-pin-nopin=\"true\" height=\"90\" src=\"https://a0.muscache.com/im/users/9199018/profile_pic/1380782460/original.jpg?aki_policy=profile_x_medium\" title=\"Elizabeth\" width=\"90\" /&gt;"}}' id="_bootstrap-neighborhood_card">
这显然是 JSON,但它已编码(如您所见)。我试过urllib.unquote 但这会引发错误。 AttributeError: 'list' object has no attribute 'split'
我希望不必求助于使用正则表达式来进行 URL 解码。我可以做什么(除了使用正则表达式)来制作这个有效的 JSON?
【问题讨论】:
-
这不是 URL 编码的。 URL 编码类似于
This%20is%20a%20test。您所拥有的是使用 HTML 字符实体的 HTML,例如&lt;用于<。关于如何处理这个问题已经有很多很好的答案。 -
你试过
eval('('+String+')')吗?这些是 HTML 实体。你的问题是这是一个字符串。你需要把它变成代码。 -
@larsks 你说得对,我改写了标题。