这可能有点复杂,但在这种特殊情况下工作的大多数解决方案几乎是相同的。
首先,让我告诉你为什么使用 Beautiful Soup 或 xmlml 不起作用。您需要检索一些只有在单击橙色包缩略图后才可用的信息,对吧?这是使用 Javascript 加载的,因此 Beautiful Soup 和朋友将无法使用橙色包图像(因为他们不解析 Javascript,也不解析树中不存在的元素)。所以这是一个死亡的结局。
但是,还有其他屏幕抓取工具,例如Selenium或 PhantomJS。我已经测试了两者并且工作得很好。他们基本上集成了浏览器,因此他们显然能够管理 javascript。我不知道您是否需要从服务器上自动抓取它,或者您想随意启动抓取过程。使用 Selenium(在您告诉它要打开哪个页面、要单击哪个元素等之后),您将看到您的浏览器自行完成所有这些工作。还有其他可用选项,例如使用无头浏览器。在我看来,它非常强大,但让它工作起来可能会变得相当复杂。
一个更简单的解决方案是使用 PhantomJs。它与 Selenium 类似,但正如其名称所示,您通过 Javascript 提供指令(这可能会更舒服一些,因为您已经在处理 Web 元素)。我推荐你使用CasperJS:It eases the process of defining a full navigation scenario and provides useful high-level functions, methods & syntactic sugar for doing common tasks...
让我来感受一下它的样子:
casperFunction = function(){
var casper = require('casper').create({
verbose: true
});
casper.start('yourwebpage'); // loading the webpage
casper.then(function(){ // after loading...
casper.evaluate(function(){ // get me some element's value
document.getElementById('yourelement').value
});
});
casper.then(function(){ // after that, click on this other element
this.click('#id_of_other_element');
})
casper.wait(7000); // wait for some processing... this can be quite
// useful if you need to wait a few seconds in
// order to retrieve your orange bag later
casper.run(); // actually runs the whole thing
在那里,您拥有完成任务所需的大部分东西。
顺便说一句,让我提醒您,通常需要获得许可才能检索此类内容。
希望有帮助。