【问题标题】:Curl -u in scrapy卷曲 -u 在scrapy
【发布时间】:2017-03-16 10:58:57
【问题描述】:

如何在scrapy上做这个curl?

curl –i -u account_id:api_key 
"https://xecdapi.xe.com/v1/convert_from.json/?from=USD&to=CAD,EUR 
&amount=110.23" 

【问题讨论】:

    标签: python curl web-scraping scrapy scrapy-spider


    【解决方案1】:

    你可以使用scrapy fetch命令:

    scrapy fetch http://stackoverflow.com --nolog > output.html
    

    要使用身份验证,您可以尝试通过 url 本身传递凭据:

    scrapy fetch "http://username:password@stackoverflow.com" --nolog > output.html
    

    【讨论】:

    • 我想在蜘蛛里面做
    • 我再次使用 Scrapy fetch 得到 500 Internal Server Error
    • @AminahNuraini 但这不是你问题中所说的;我看到您还有另一个问题未解决,表明您想在蜘蛛中执行此操作,所以也许您应该更清楚地说明并保留一个完全描述您的问题的问题。
    • 无论如何都没关系。 Scrapy fetch 和 inside spider 无论如何都会给出相同的结果
    【解决方案2】:

    找到答案了!!!

    由于 Twisted Twisted HTTPS Client 中的错误,Scrapy 不允许通过 URL 或 Authorization 标头进行 HTTP 基本身份验证。

    我们必须使用一个不太出名的中间件,HTTPAuthMiddleware https://github.com/scrapy/scrapy/blob/master/docs/topics/downloader-middleware.rst#httpauthmiddleware

    要使用它,请像这样激活settings.py 中的中间件:

    DOWNLOADER_MIDDLEWARES = {
        'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 811,
    }
    

    并将这些属性添加到蜘蛛。

    from scrapy.spiders import CrawlSpider
    
    class SomeIntranetSiteSpider(CrawlSpider):
    
        http_user = 'someuser'
        http_pass = 'somepass'
        name = 'intranet.example.com'
    
        # .. rest of the spider code omitted ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2017-02-05
      • 1970-01-01
      • 2015-12-18
      • 2017-03-27
      • 2019-11-02
      相关资源
      最近更新 更多