Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSoup中使用CSS选择器来选择包含图像的所有元素,包括数据src(HTML5数据集)属性中的元素?_Java_Html_Css Selectors_Jsoup - Fatal编程技术网

Java 如何在JSoup中使用CSS选择器来选择包含图像的所有元素,包括数据src(HTML5数据集)属性中的元素?

Java 如何在JSoup中使用CSS选择器来选择包含图像的所有元素,包括数据src(HTML5数据集)属性中的元素?,java,html,css-selectors,jsoup,Java,Html,Css Selectors,Jsoup,我试图使用JSoup解析任何网页,并以编程方式标识内容块元素,这些元素定义为多次出现并包含文本、链接和图像的任何元素。在我到达之前一切都很顺利。此页面上的图像不会显示在标记中,而是显示在类似数据背景的属性中=http://cdn.fansided.com/wp-content/blogs.dir/314/files/2015/01/8O7hjxQ-268x150.png. 有没有一种方法可以使用单个CSS选择器(可能是正则表达式)?这将选择包含图像的所有元素,无论其类型如何?试试这一个 Doc

我试图使用JSoup解析任何网页,并以编程方式标识内容块元素,这些元素定义为多次出现并包含文本、链接和图像的任何元素。在我到达之前一切都很顺利。此页面上的图像不会显示在标记中,而是显示在类似数据背景的属性中=http://cdn.fansided.com/wp-content/blogs.dir/314/files/2015/01/8O7hjxQ-268x150.png.

有没有一种方法可以使用单个CSS选择器(可能是正则表达式)?这将选择包含图像的所有元素,无论其类型如何?

试试这一个

Document doc = Jsoup.connect("http://fansided.com/").userAgent("Mozilla").get();
Elements select = doc.select("[data-background],[style~=background:url]");

它将获取包含数据背景或style=background:url的任何元素。。。属性。

不完全是您想要的,但是您需要做的就是选择任何具有以图像文件扩展名结尾的数据背景属性的内容,例如Document。选择[data background~=.\\\\\\.png\\\.gif\\\.jpg];这将选择数据背景属性与正则表达式匹配的任何内容。除了选择普通标记外,还必须执行此操作。一些网站还使用JavaScript动态加载所有内容,而Jsoup无法使用JavaScript。请注意,编写一个算法来处理所有可能的网站结构是非常非常困难的。@JonasCz我希望能够选择任何以图像文件扩展名结尾的属性。有些图像是以数据背景显示的,有些是以style=background:url等形式显示的。显然,这是不可能的。现在,您需要在根据该aqttribute的值按正则表达式进行选择时为其指定属性的名称。作为一种解决方法,您可以迭代所有元素及其属性,并检查属性值是否与正则表达式匹配。