2013-08-06 20 views
3

我正在寻找给定网站上的所有图像。Jsoup从css获取背景图像路径

为此我需要找到是CSS例如内的那些:

.gk-crop { 
    background-image: url("../images/style1/g_rss-2.png"); 
} 

现在的问题是如何才能得到这些网址JSoup的?

到目前为止,香港专业教育学院尝试了以下内容:

Document doc = Jsoup.connect(url).get(); 
    Elements imagePath = doc.select("[src]"); 
    imagePath.select("*[style*='background-image']"); 

但至今没有运气。

有谁知道我该如何实现它?

回答

3

Jsoup不解析css文件。

看看this知道什么Jsoup负责。

您需要一个单独的css解析器来从css文件中提取url。看看this

-2

如果你想选择网站上所有图像的URL,你可以选择所有图像标签,然后获取绝对URL。

例子:

String html = "http://www.bbc.co.uk"; 
Document doc = Jsoup.connect(html).get(); 

Elements titles = doc.select("img"); 

for (Element e : titles) { 
    System.out.println(e.absUrl("src")); 
} 

这将抓住所有的<img>元素和提交,如

http://sa.bbc.co.uk/bbc/bbc/s?name=SET-COUNTER&pal_route=index&ml_name=barlesque&app_type=web&language=en-GB&ml_version=0.16.1&pal_webapp=wwhp&blq_s=3.5&blq_r=3.5&blq_v=default-worldwide 
http://static.bbci.co.uk/frameworks/barlesque/2.50.2/desktop/3.5/img/blq-blocks_grey_alpha.png 
http://static.bbci.co.uk/frameworks/barlesque/2.50.2/desktop/3.5/img/blq-search_grey_alpha.png 
http://news.bbcimg.co.uk/media/images/69139000/jpg/_69139104_69139103.jpg 
http://news.bbcimg.co.uk/media/images/69134000/jpg/_69134575_waynerooney1.jpg 

如果你只想要.JPG文件,告诉选择通过包括

Elements titles = doc.select("img[src$=.jpg]"); 

这导致只解析.JPG-URL。

+0

Daniel B通过'css'请求的图像将不会成为'html'源代码中''标记的一部分。 – Niranjan

0

就像Niranjan提到的,Jsoup不是用于解析CSS,而是用于解析XML。如果你真的需要从CSS中提取一些图片,你需要为此目的使用一些第三方库,或者编写简单的正则表达式来从CSS文件抓取URL--它仍然是纯文本不是它?这不是灵活的解决你的问题,但它会是最快的一个:)