get_attribute('src') 不再获取 url

问题描述

我编写了一个脚本,用于使用 selenium webdriver 在谷歌图片上抓取图片。 webdriver 浏览图像并获取 url。但是,今天当我运行脚本时,它没有获得任何图像的 url。

java.lang.reflect

它为每个图像返回“错误”。它工作正常,我不知道是什么原因造成的。此外,在导航时,webdriver 有时会停止。没有错误或任何东西,它只是停止。

解决方法

我认为首先要检查的是抛出了什么异常,因为异常可能出现在其他地方,例如在文件保存期间。

尝试添加:

try:
    ...
except Exception as e:
    print("Error with exception: ",e)

这将为您提供有关出现问题的信息。

第二个问题是你的搜索方法,尽量避免类似的搜索("//*[@id="islrg"]/div[1]/div[{}]/a[1]/div[1 ]/img") 并搜索更具体的模式。

最后要指出的是您正在使用的工具。正如您所描述的,您只需要从页面获取图像。这项任务可以通过 Web 抓取 库(例如 BeatifulSoup)而不是像 Selenium 那样使用汽车来高效地完成。

作为您的问题的示例,我编写了一个小脚本,可以使用 bs4 在一秒钟内从页面中抓取所有图像:

import requests # to download HTML file
from bs4 import BeautifulSoup as bs # to parse data

a = requests.get("some URL") # download html

soup = bs(a.text) # feed it to BeautifulSoup
all_imgs = soup.find_all("img") # extract all images

img_urls = []

for img in all_imgs: # iterate over all images
    img_urls.append(img.get("src")) # append to list img "scr" attribute value

注意:

当使用这种方法下载纯 HTML 时,有时它可能与您在浏览器中打开相同 URL 时看到的不同,因此在创建此类 scraper 时尝试:

with open("test.html","w") as f:
    f.write(page.text)

然后在浏览器中检查此文件以找到获取所需信息的方法。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...