Java 在url内容中查找背景图像位置

Java 在url内容中查找背景图像位置,java,Java,我想用java代码将“”的背景图像保存到磁盘上。此图像每隔几天更改一次。它有一个下载链接,但我找不到通过代码保存它的图像位置。我如何通过jsoup、htmlunit等在url内容中找到此图像的位置?您的url错误。这是正确的一个:我看到这个元素是异步填充的 因此,您需要使用一些webdriver自动化工具,最常见的是selenium /* import selenium, you can do it via maven; <dependency> <groupId>

我想用java代码将“”的背景图像保存到磁盘上。此图像每隔几天更改一次。它有一个下载链接,但我找不到通过代码保存它的图像位置。我如何通过jsoup、htmlunit等在url内容中找到此图像的位置?

您的url错误。这是正确的一个:

我看到这个元素是异步填充的 因此,您需要使用一些webdriver自动化工具,最常见的是selenium

/*
import selenium, you can do it via maven;
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-server</artifactId>
    <version>2.45.0</version>
</dependency>
 */
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

public class SaveImageFromUrl {

    public static void main(String[] args) throws Exception {

        // download chrome driver http://chromedriver.storage.googleapis.com/index.html
        // or use firefox, w/e u like
        System.setProperty("webdriver.chrome.driver", chromeDriverLocation);

        WebDriver driver = new ChromeDriver(); // opens browsers
        driver.get("http://yooz.ir/"); // redirect to site
        // wait until element which contains the download link exist in page
        new WebDriverWait(driver, 5).until(new ExpectedCondition<WebElement>() {
            @Override
            public WebElement apply(WebDriver d) {
                return d.findElement(By.className("image-day__download"));
            }
        });

        // get the link inside the element via queryselector
        // https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
        String img2download = driver.findElement(By.cssSelector(".image-day__download a")).getAttribute("href");
        System.out.println("img2download = " + img2download);

        //TODO download..

        driver.close();
    }

}
/*
进口硒,你可以通过maven;
org.seleniumhq.selenium
硒服务器
2.45.0
*/
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.WebElement;
导入org.openqa.selenium.chrome.ChromeDriver;
导入org.openqa.selenium.support.ui.ExpectedCondition;
导入org.openqa.selenium.support.ui.WebDriverWait;
公共类SaveImageFromUrl{
公共静态void main(字符串[]args)引发异常{
//下载chrome驱动程序http://chromedriver.storage.googleapis.com/index.html
//或者像你一样使用firefox
System.setProperty(“webdriver.chrome.driver”,chromeDriverLocation);
WebDriver driver=new ChromeDriver();//打开浏览器
驱动程序。获取(“http://yooz.ir/“”;//重定向到站点
//等待页面中存在包含下载链接的元素
新的WebDriverWait(驱动程序,5)。直到(新的ExpectedCondition(){
@凌驾
公共WebElement应用(WebDriver d){
返回d.findElement(By.className(“image-day_uu下载”);
}
});
//通过queryselector获取元素内部的链接
// https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector
字符串img2download=driver.findelelement(By.cssSelector(“.image-day\uu download a”).getAttribute(“href”);
System.out.println(“img2download=“+img2download”);
//待办事项下载。。
driver.close();
}
}

非常感谢您的回答。但是如何通过java代码找到正确的url呢?yooz.ir的背景图像每隔几天就会改变一次。“”是固定的,但是如何通过java代码找到当天图像的名称呢?thanks@mhm您需要获取页面的源代码,然后对其进行解析。请看另一个答案。谢谢你的回答。但是我可以在我的代码中添加上面的代码吗?我添加了jsoup库并复制了“documentdoc=jsoup.parse(输入,“UTF-8”,”)。。。在main方法中出现“无法解析符号‘input’”?我添加了“import org.openqa.selenium.JavascriptExecutor;”。。。“在新课程教程中”和“无法解析符号‘openga’”apears?谢谢jim。我无法运行您的代码:我无法下载chrome驱动程序,因此我更改了“System.setProperty”(“webdriver.chrome.driver”,chromeDriverLocation);“注释和更改”WebDriver=new ChromeDriver();“to”WebDriver driver=新的FirefoxDriver();“。但当我运行代码时,”,不会出现“yooz.ir”,几秒钟后会出现许多错误。我正在使用firefox,不想打开浏览器;我想远程查找背景图像链接。我尝试使用Jsoup,但我不能。我是java初学者。你可以打开浏览器、web驱动程序,你可以“无头”运行它“,编辑您的主要问题和错误,了解html和ajax中的queryselector,您将理解其余内容