0

我正在为 macys.com 编写爬虫。我需要输入每种产品的每种颜色作为单独的条目。他们的网站设置为当点击发送到切换产品图像的样本图像时激活脚本。据我所知,这是检索产品图像 URL 的唯一方法(因为在单击样本之前它不会存储在页面上的任何位置)。我目前正在使用 requests 和 BeautifulSoup 来解析 html。此代码将在无法安装浏览器的环境中运行(即我不能使用 Selenium)。色板不在表单标签中,并且不被机械化(或斜纹)认为是可点击的。

tl;dr:如何在不使用 Selenium 的情况下向 id 和 tag 找到的非表单、非链接元素发送点击?

4

1 回答 1

0

所以,这不完全是你所要求的,但它确实有效。通过设置虚拟显示器,Selenium 可以在没有实际浏览器的情况下使用。它确实需要xvfb和 pyvirtualdisplay(它是 xvfb 的包装器)。这是我如何让它工作的(在安装 xvfb 后在 ubuntu 12.04 上)。

from selenium import webdriver
from pyvirtualdisplay import Display

display = Display(visible=0, size=(800, 600))
display.start()

browser = webdriver.Firefox()
url = 'http://www1.macys.com/shop/product/alfani-black-sweater-horizontal-texture-stripe-full-zip-sweater?ID=720780&CategoryID=4286&LinkType=PDPZ1'
browser.get(url)
el = browser.execute_script('return MACYS.pdp.primaryImages')

print el
{u'720780': {u'Blue Indigo': u'2/optimized/1291562_fpx.tif',
     u'Deep Black': u'3/optimized/1291563_fpx.tif',
     u'Flint Heather': u'4/optimized/1291564_fpx.tif',
     u'Grey Heather': u'1/optimized/1291911_fpx.tif',
     u'River Blue': u'0/optimized/1291560_fpx.tif'}}

碰巧他们有一个名为 javascript 的命名空间MACYS,用于保存有关图像的所有信息(这是我打印出来的)。希望有帮助。

于 2012-12-20T03:02:44.700 回答