【发布时间】:2014-10-22 03:21:50
【问题描述】:
编辑:自我回答。 JSoup 确实找到了所有图像标签。
我试图从https://www.flickr.com/explore 上刮掉一些东西,但遇到了问题。
在源代码中,该网站上的主要图像是用红色字体编写的,我的JSoup select 方法(或getElementsByTag 方法)找不到它们。由于格式问题,如果你们自己访问网站并检查源代码会容易得多,但我会尝试在此处包含最低限度的内容。
编辑:我刚刚尝试通过chrome和IE查看源代码,图像标签不是红色的,所以我假设它是firefox格式。但问题仍然存在,JSoup 没有看到那些图像标签。 (文末二次编辑)
编辑 3: 删除了我粘贴的代码以将此打印屏幕放入:http://i.imgur.com/o8fNPnZ.png 注意红色块是主要用户上传的图像(我想要的),你可以看到其他不是红色的 img 标签(但那些只是像小标志这样的东西)。当我运行代码时
Elements imageElements = doc.select("img");
然后打印出来,我得到所有不是红色的标签。
我对 HTML 或 CSS 不是很有经验,有什么我不知道的具体内容吗?或者它在我的代码中?有没有办法检索“红色”字体图像?
编辑 2: 好的,所以我在 Firefox 中将其缩小为红色 HTML 字体,这是某种错误。如果我将鼠标悬停在它上面,它会显示:No space between attributes。
现在我有点困惑,因为 flickr 是一个巨大的网站,而且自从我看到图像后它显然仍然有效。这可能是他们正在进行的某种“反刮擦”吗?我还有办法下载图片吗?
【问题讨论】:
-
我无法重现您所说的内容。 HTML 源代码没有颜色。这是纯文本。
-
@recursive 抱歉,我应该在询问之前进行更多研究。我刚刚在 IE 和 chrome 中都试过了,文本不是红色的。所以我假设红色只是一种Firefox格式。但是我关于为什么 JSoup 无法识别它的问题仍然存在
-
这种情况下的 firefox 着色恰好缩小了 JSoup 找不到的范围,所以这要么是巧合,要么是 firefox 有某种基于我不知道的 HTML 格式
-
我也无法在 Firefox 中重现“红色”html。错误消息表明属性之间没有空格,但您的代码摘录清楚地显示了它们。它可能是一个 unicode 非空格字符吗?对我来说似乎没有什么问题。
-
警告“属性之间没有空格”是指截图中
width之前没有空格。这可能会导致 JSoup 出现问题。