gpt4 book ai didi

python - 使用 Selenium 在 Python 中抓取由 javascript 注入(inject)的图像

转载 作者:太空宇宙 更新时间:2023-11-04 03:15:58 25 4
gpt4 key购买 nike

我正在尝试在 Mac OSX 上用 Python 制作网络抓取工具,我正在测试的一个示例是从 MyFonts 页面(例如 here)加载标签和图像。最初我使用的是 BeautifulSoup,但我注意到该网站最初加载的是“blank.png”,而不是我试图抓取的字体图像,然后用 js 将其替换为“真实”图像。我正在尝试使用 Selenium,是否可以使用 webdriverwait 来监听 img src 中的变化,类似于下面的示例,但不是通过 ID 或类?

ff = webdriver.Firefox()
ff.get("http://www.myfonts.com/fonts/fort-foundry/gin/")
try:
element = WebDriverWait(ff, 10).until(EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:
ff.quit()

理想情况下,这应该等待 not img src="*/blank.png"因为该元素不会更改类或获得一致的名称。还是我应该等到页面完全加载完毕?刮刀必须经过很多这样的过程,所以我尽量让它保持相当快。

我是 Python 的新手,所以非常感谢任何帮助。

最佳答案

首先,确保你所做的是合法的:Legal page .

等待至少加载一个字体样本,然后继续提取:

# wait for at least one font sample to be loaded
wait = WebDriverWait(ff, 10)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#overview_samples .search-result-item")))

# get font sample urls
for sample in ff.find_elements_by_css_selector("#overview_samples .search-result-item .sample .fontsample[title]"):
print(sample.get_attribute("src"))

打印:

http://samples.myfonts.net/e_91/u/e7/19061adcc0c9ac025d0414e5ff11a1.gif
http://samples.myfonts.net/a_91/u/e5/4d795cdae0cb99d1424b13020d0f6e.gif
...
http://samples.myfonts.net/b_92/u/2c/4c21ddeb53f19f109306746dac6b24.gif

关于python - 使用 Selenium 在 Python 中抓取由 javascript 注入(inject)的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com