在没有Selenium的python中发送单击到网页上的img

时间:2012-12-19 23:55:52

标签: python web-crawler

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

tl; dr:如何在不使用Selenium的情况下将id发送到由id和tag找到的非格式非链接元素?

1 个答案:

答案 0 :(得分: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'}}

恰好它们有一个名为MACYS的javascript命名空间,它们保存了有关图像的所有信息(这是我打印出来的)。希望有所帮助。