【问题标题】:Uber API calls with scrapy使用 scrapy 调用 Uber API
【发布时间】:2020-11-05 07:34:47
【问题描述】:

这是一个完美运行的curl 命令:

curl -X POST -k -H 'X-Csrf-Token: '\'\' -i 'https://www.uber.com/api/loadSearchJobsResults?localeCode=fr-FR'

在 scrapy shell 中,请求正在重定向并显示 404 状态码:

scrapy代码

>>> fetch(scrapy.Request(url,method='POST',headers = {'x-Csrf-Token':''}))
2020-11-05 12:26:49 [scrapy.core.engine] DEBUG: Crawled (403) <POST https://www.uber.com/api/loadSearchJobsResults?localeCode=fr-FR> (referer: None)
>>> fetch(scrapy.Request(url,method='POST',headers = {'x-Csrf-Token':'x'}))
2020-11-05 12:26:57 [scrapy.downloadermiddlewares.redirect] DEBUG: Redirecting (301) to <POST https://www.uber.com/pk/ur/api/loadSearchJobsResults/?localeCode=fr-FR> from <POST https://www.uber.com/api/loadSearchJobsResults?localeCode=fr-FR>
2020-11-05 12:26:58 [scrapy.core.engine] DEBUG: Crawled (404) <POST https://www.uber.com/pk/ur/api/loadSearchJobsResults/?localeCode=fr-FR> (referer: None)

我错过了什么?

【问题讨论】:

  • 可能有很多东西,例如标头(例如用户代理),令牌标头的大小写,其值(cURL 发送 2 字符字符串 '',您的 Scrapy 代码发送一个空字符串)...
  • @Gallaecio,感谢您的评论。您能否在答案中添加一些内容,因为我已经尝试了各种类似的方法。

标签: python api curl web-scraping scrapy


【解决方案1】:

@Gallaecio 给出了线索​​:

令牌头的大小写,它的值(cURL发送2个字符 string '',你的 Scrapy 代码发送一个空字符串)

每当您必须将 curl 请求转换为 scrapy 时,我建议您使用以下实用程序:Postman (CTRL + O -> Raw Text)、scrapy.utils.curl.curl_to_request_kwargs('write curl request')Michael's website curl2scrapy

我用过 Postman,所以在 scrapy 的 shell 中你应该这样获取:

fetch('https://www.uber.com/api/loadSearchJobsResults?localeCode=fr-FR', headers={'X-Csrf-Token': "''"}, method='POST')

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 2016-08-18
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 2022-09-24
    • 2019-06-13
    • 1970-01-01
    • 2017-10-04
    相关资源
    最近更新 更多