0

macys.com のクローラーを作成しています。各製品の各色を別のエントリとして入力する必要があります。彼らのウェブサイトは、クリックが製品画像を切り替えるスウォッチ画像に送信されるとスクリプトがアクティブになるように設定されています. 私が知る限り、これが商品画像の URL を取得する唯一の方法です (スウォッチをクリックするまでページのどこにも保存されないため)。現在、リクエストと BeautifulSoup を使用して html を解析しています。このコードは、ブラウザをインストールできない環境で実行する必要があります (つまり、Selenium を使用できません)。スウォッチはフォーム タグ内になく、機械化 (またはツイル) によってクリック可能とは見なされません。

tl;dr: Selenium を使用せずに、ID とタグで見つかった非フォーム、非リンク要素にクリックを送信するにはどうすればよいですか?

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'}}

MACYSたまたま、画像に関するすべての情報を保持する javascript 名前空間を持っていることがあります (これは私がそこに出力したものです)。それが役立つことを願っています。

于 2012-12-20T03:02:44.700 に答える