如何在python中使用Selenium提取<figure>图像?

2024-09-30 00:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图从appstore中提取上述xpath中的图像:https://apps.apple.com/us/app/mercer-marketplace-benefits/id1041417557

enter image description here

我使用xpath尝试了以下代码:

driver.get('https://apps.apple.com/us/app/mercer-marketplace-benefits/id1041417557')
rating_distr = WebDriverWait(driver,30).until(EC.presence_of_element_located((By.XPATH, """(//*[@id="ember290"]/div/div[2])""")))
print(rating_distr.get_attribute('innerHTML'))

但输出不是图像:

^{pr2}$

有没有办法把输出提取成图像?谢谢你的帮助!在


Tags: appshttps图像comappapplegetdriver
2条回答

打开网页并按id滚动到元素,因为我检查了id,它是“ember290”您想要在网页中的部分。在

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import pyscreenshot as ImageGrab

browser = webdriver.Chrome()  # we are using chrome as our webbrowser

browser.get('https://apps.apple.com/us/app/mercer-marketplace-benefits/id1041417557')
#rating_distr = WebDriverWait(browser,30).until(EC.presence_of_element_located((By.XPATH, """(//*[@id="ember290"]/div/div[2])""")))

ActionChains(browser).move_to_element(browser.find_element_by_id('ember290')).perform()

im=ImageGrab.grab()
im.show()

im=ImageGrab.grab(bbox=(162,650,500,500))
im.show()

ImageGrab.grab_to_file('im.png')

滚动完成后,拍一张屏幕截图。在

正如我在评论中建议的那样,我认为一个更好/更快的方法是只获取值而不是截图。如果你拍了一张截图,就得有人手动打开,然后用其他格式记录截图中的值,这将是一个漫长而乏味的过程。相反,只需从页面中获取数据并以最终所需的格式将其转储。在

例如,如果您只查看HTML中的5星级评级栏

<div class="we-star-bar-graph__row">
    <span class="we-star-bar-graph__stars we-star-bar-graph__stars 5"></span>
    <div class="we-star-bar-graph__bar">
        <div class="we-star-bar-graph__bar__foreground-bar" style="width: 76%;"></div>
    </div>
</div>

您可以看到应用了一个类,we-star-bar-graph__stars 5,它表示它的星级。您还可以看到条的宽度设置为style="width: 76%;",这样就可以知道5星级评级的百分比。有了这些信息,我们就可以为每一个明星的评级。在

^{pr2}$

这应该转储如下值

5-star rating: 76%
4-star rating: 12%
3-star rating: 4%
2-star rating: 1%
1-star rating: 6%

这可能不是你最终想要的格式,但它应该能让你找到正确的方向。在

相关问题 更多 >

    热门问题