2015-11-16 9 views
2

Я пытаюсь отловить некоторую информацию с этой страницы ASP http://laredoute.fr/ppdp/prod-350007615.aspx главным образом первые 4 изображения с высоким разрешением, которые загружаются в карусели изображения. В зависимости от цвета продукта у вас есть несколько кнопок, которые вы должны выбрать. Это код, который у меня есть, который извлекает кнопки и добавляет их в список, который нужно щелкнуть позже.Scrapy and Javascript

from selenium import webdriver 
from scrapy.http import HtmlResponse 
from scrapy.spiders import Spider 
from scrapy.selector import Selector 
from scrapy.selector import HtmlXPathSelector 
from scrapy.linkextractors import LinkExtractor 
import urllib 
import urllib2 
from bs4 import BeautifulSoup 



class MyOpener(urllib.FancyURLopener): 
    version = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17' 

myopener = MyOpener() 
url = 'http://www.laredoute.fr/ppdp/prod-350007615.aspx' 

f = myopener.open(url) 
soup = BeautifulSoup(f) 

viewstate = soup.find("fieldset", class_="set set-colour") 


list = [] 

for elem in viewstate.findAll('label'): 
    #print elem['title'] 
    #print elem['for'] 
    list.append(elem['for'].strip('\n\t ,')) 

#print list 


driver = webdriver.Chrome('/Users/vasquez/Documents/crawler/chromedriver') 

driver.maximize_window() 
driver.get(url) 

radio = driver.find_element_by_id(list[0]) 


driver.execute_script("arguments[0].click();", radio) 

Теперь у меня есть проблемы с этим. Эта карусель изображений находится здесь, в этой части HTML-кода.

<div class="divProds jcarousel-clip"> 

    <ul class="divAddScroller"> 

    </ul> 

</div> 

Если открыть Инструменты разработчика в Chrome и нажмите на него появляется весь код, если я разобрать весь HTML с Scrapy, как я делал раньше код не существует, и я могу получить ссылку img, которая мне нужна. Это часть HTML, которую я хочу проанализировать.

<li><a href="javascript:void(0)"> 

<img src="//media.laredoute.com/products1/72by72/d/e/6/350007615_0_PR_1_11970785_350007615-1fca06aa-305f-4b3f-92da-80e8e21cb43a_1200.jpg" data-src="http://media.laredoute.com/|Dimension|/d/e/6/350007615_0_PR_1_11970785_350007615-1fca06aa-305f-4b3f-92da-80e8e21cb43a_1200.jpg" title="Blouse manches longues, transparences, dentelle VERO MODA" alt="Blouse manches longues, transparences, dentelle VERO MODA image 1" width="72" height="72" data-cerberus="img_pdp_thumbnails1" class=""> 
</a> 
</li> 

Так как последний вопрос, как я могу сделать Scrapy нагрузку, JavaScript: недействительным (0) IMG ссылку внизу. Благодарю.

+0

Отправляй сообщение: http://stackoverflow.com/questions/8550114/can-scrapy-be-used-to-scrape-dynamic-content -из-сайты-что-это-с использованием-Ajax. – Jaco

+0

Я рекомендую вам проверить [Splash] (https://github.com/scrapinghub/splash), он отлично работает с помощью scrapy для рендеринга javascript. – eLRuLL

+0

Спасибо, ребята! Будет проверено! –

ответ

0

С помощью этого

sleep(5) 
html = driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML") 

я был в состоянии получить динамическую вынесенное страницу. Теперь я могу обработать его дальше и извлечь нужные мне изображения.