我想以编程方式查找给定图像URL的类似图像的URL列表.我找不到任何免费的图片搜索API,所以我试图通过刮掉Google的Search by Image来做到这一点.
如果我有图像URL,例如http://i.imgur.com/oLmwq.png,则导航到https://www.google.com/searchbyimage?&image_url=http://i.imgur.com/oLmwq.png会提供相关的图像和信息.
如何让jsdom.env
生成浏览器从上述URL获取的HTML?
这是我尝试过的(CoffeeScript):
jsdom = require 'jsdom'
url = 'https://www.google.com/searchbyimage?&image_url=http://i.imgur.com/oLmwq.png'
jsdom.env
html: url
scripts: [ "http://code.jquery.com/jquery.js" ]
features:
FetchExternalResources: ['script']
ProcessExternalResources: ['script']
done: (errors, window) ->
console.log window.$('body').html()
您可以看到HTML与我们想要的不匹配.这是Jsdom的HTTP标头的问题吗?
解决方法:
对于像这样的任务,我发现request cheerio比jsdom更容易.我看到你已经找到了答案,但我想我会把它作为替代解决方案.
例:
var request = require('request'),
cheerio = require('cheerio');
var google = 'https://www.google.com/searchbyimage';
var image = 'http://i.imgur.com/oLmwq.png';
var options = {
url: google,
qs: { image_url: image },
headers: { 'user-agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11' }
};
request(options, function (err, res, body) {
var $= cheerio.load(body);
…
});