我想编写一个以archive.is
(或archive.fo
,archive.li
或archive.today
)链接作为输入的函数,并提供原始网站的网址作为输出。
例如,如果输入为'http://archive.is/9mIro'
,那么我希望输出为'http://www.dailytelegraph.com.au/news/nsw/australian-army-bans-male-recruits-to-get-female-numbers-up/news-story/69ee9dc1d4f8836e9cca7ca2e3e5680a'
。
我怎么能在python中做到这一点?
答案 0 :(得分:1)
是的,您的方法可以适用于其他网站,但archive.is
似乎可以保护他们的数据免受自动查询的影响,当我尝试curl,python(urllib2)时,我收到错误Empty reply from server
。你需要像模仿真实浏览器的幻影一样的东西。我相信它只适用于少数查询,然后会显示验证码或给出错误。此外,他们似乎记录了IP地址甚至phantomjs从尝试curl或python的同一台机器获得错误。
这是有效的phantomjs代码:
var webPage = require('webpage');
var page = webPage.create();
var system = require('system');
var args = system.args;
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36';
function getOriginalUrl(shortUrl, cb) {
page.open(shortUrl, function(status) {
//console.log(status);
var url = page.evaluate(function(){
return document.querySelector('form input').value;
});
cb(url);
});
}
if (args.length > 1) {
getOriginalUrl(args[1],function(url){
console.log(url);
phantom.exit();
});
} else {
console.log('Pass url');
phantom.exit();
}