最好使用python(目前使用urllib和BeautifulSoup)给出一个URL。
例如,我正在尝试抓取此页面上的主要照片:http://www.marcjacobs.com/marc-jacobs/womens/bags-and-accessories/c3122001/the-single#?p=1&s=12
在Firefox下的工具>页面信息>媒体列出所有可见图像,包括我想要抓取的图像的链接(http://imagesec.mj.ctscdn.com/image/336/504/6ace6aac-c049-4d7e-9465-c19b5cd8e4ac.jpg)
两个相互关联的问题:
一个工作示例可能是谷歌“购物”,如果您输入此产品的名称并选择颜色,图像将以正确的颜色(来自完全相同的页面)显示在搜索结果中。
基本上,我希望能够从大多数购物网站中抓取颜色和样式/变体特定图像。
选择正确的颜色看起来更复杂,在这种情况下,我现在只能选择黑色的主要产品图片。
到目前为止,我已经尝试过选择基于img高度标签的图片,并尝试在没有高度/宽度标签的情况下阅读尺寸......但是我想到了必须有更好的方法。
答案 0 :(得分:-1)
这可能有点复杂,但在这种特殊情况下工作的大部分解决方案几乎都是一样的。
首先,让我告诉你为什么使用Beautiful Soup或xlml不起作用。您需要检索一些仅在您点击橙色包缩略图后才可用的信息,对吗?这是使用Javascript加载的,因此Orange 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
在那里,您拥有完成任务所需的大部分内容。
顺便提一下,让我提醒您,通常需要获得许可来检索这类东西。
希望有所帮助。