【发布时间】: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
如何在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
你可以使用scrapy fetch命令:
scrapy fetch http://stackoverflow.com --nolog > output.html
要使用身份验证,您可以尝试通过 url 本身传递凭据:
scrapy fetch "http://username:password@stackoverflow.com" --nolog > output.html
【讨论】:
找到答案了!!!
由于 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 ...
【讨论】: