【问题标题】:JSON URL sometimes returns a null responseJSON URL 有时会返回空响​​应
【发布时间】:2018-05-13 18:29:52
【问题描述】:

我正在抓取一个从单个 JSON 文件加载产品数据的网站。我通过检查网络流量找到了 JSON 的 URL。

问题是这样的:当我关注 JSON URL 时,大多数链接都会提供 JSON 结果。但是,其中包含特殊字符(例如 é)的产品的 JSON URL 返回空响应。当然数据显示在浏览器上,但我似乎无法直接获得 JSON 响应。

有什么建议吗?

(我正在尝试找到一个以相同方式运行的类似网站,因此我可以将其发布在这里)

编辑:

这是一个例子

产品A网址:https://www.boozebud.com/p/hopnationbrewingco/thedamned

WORKS:A 的 JSON 网址:https://www.boozebud.com/a/producturl/p/hopnationbrewingco/thedamned

产品B网址:https://www.boozebud.com/p/àbloc/superprestigenaturalblondebeer

返回 NULL:B 的 JSON url:https://www.boozebud.com/a/producturl/p/àbloc/superprestigenaturalblondebeer

(与我之前未回答的问题有关:scrapy: dealing with special characters in url 可能需要根据这个问题进行修改)

【问题讨论】:

  • minimal reproducible example 确实需要能够解决这个问题。
  • 带有重音符号的“a”是否应该在网址中?
  • 是的。原始url来自首页搜索商品,JSON url是从网络流量中提取出来的。
  • 唯一的想法是使用本地代理服务器来捕获从浏览器发送到服务器的真实请求。也许它使用不同的字符或相同的字符但编码不同。或者,服务器可能会检查一些标头,例如 XHRREFERER

标签: python json scrapy


【解决方案1】:

在我看来,问题在于标头,它似乎对至少 Content-Type 标头非常敏感,它似乎在服务器内部用于解码传入的 URL 或类似的东西。 尝试下载这样的请求(这是内部js正在做的)

yield Request('https://www.boozebud.com/a/producturl/p/%C3%A0bloc/superprestigenaturalblondebeer', 
              headers={"Content-Type": "application/json; charset=UTF-8"})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-24
    • 2012-05-14
    相关资源
    最近更新 更多