2016-02-28 3 views
2

Когда я пытаюсь достичь тега изображения через этот код, я получаю следующий вывод.Как получить изображения из ссылки?

url = 'https://paytm.com/shop/p/pepe-jeans-blue-slim-fit-t-shirts-APPPEPE-JEANS-BSETU2010438B648267' 

def soup_maker(url): 
    r = requests.get(url) 
    markup = r.content 
    soup = bs(markup, "html.parser") 
    return soup 

def get_images(url): 
    soup = soup_maker(url) 
    divs = soup.find_all('div', {'class': 'fixed-height'}) 
    print(divs) 
    images = soup.find_all('img') 
    print(images) 

Выход

[] 
[<img alt="{{::product.text}}" ng-src="{{::product.image_url}}"/>, 
<img alt="{{item.title}}" ng-src='{{cart.imgResized(item.image_url,"50x50") }}'/>, 
<img ng-src="{{pixelSource}}"/>] 

Но когда я вижу через Осмотреть Element его там. Я не знаю, как сохранить эти изображения.

UPDATE

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

def soup_maker(url): 
    driver = webdriver.Chrome() 
    driver.get(url) 
    try: 
     element = WebDriverWait(driver, 20).until(
     EC.presence_of_element_located((By.CLASS_NAME, "fixed-height")) 
     ) 
     markup = driver.page_source 
     soup = bs(markup, "html.parser") 
     return soup 
    finally: 
     driver.quit() 
    driver.close() 

Выше работал для меня.

ответ

2

Это выглядит как AngularJS шаблон с определенными привязками, что означает сайту нужен реальный браузер с JavaScript двигателя, чтобы быть оказанным в Оставят парсингу часть, как есть, но вместо requests, получить источник через selenium:.

from selenium import webdriver 

def soup_maker(url): 
    driver = webdriver.Firefox() # could also be Chrome(), PhantomJS() or other 
    driver.get(url) 

    # you might also need an Explicit Wait here to wait for the page to load 
    # see http://selenium-python.readthedocs.org/waits.html#explicit-waits 

    markup = driver.page_source 
    driver.close() 
    soup = bs(markup, "html.parser") 
    return soup 
Смежные вопросы