python - 如何从链接中获取图像?

标签 python selenium selenium-webdriver beautifulsoup

当我尝试通过此代码访问图像标记时,我得到以下输出。

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}}"/>]

但是当我通过 Inspect Element 看到它时,它就在那里。我不知道如何保存这些图像。

更新

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()

以上对我有用。

最佳答案

这看起来像一个具有已定义绑定(bind)的 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

关于python - 如何从链接中获取图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35679169/

相关文章:

java - 如何使用 Jenkins 将 Selenium 测试重定向到远程机器

python - 创建 CoreML LRCN 模型

python - 在 Python 中搜索并获取一行

python - 如何在 python 中规范化 vector ?

python - 使用 NLTK、scikit-learn 和 OneVsRestClassifier 打开多标签分类

c# - xpath 定位器 c# 正确的查找技术

python - Selenium pdf自动下载不起作用

java - Maven 项目不会在 selenium 项目的 test-output 文件夹中生成 testng 结果

java - 如何将 gecko 可执行文件与 Selenium 一起使用

javascript - 从元素的文本中获取数字并注入(inject) Protractor JS 中的 xpath 字符串