需要从HTML页面解析图像src然后显示它

2023-11-29

我目前正在尝试开发一个应用程序,它可以访问以下网站(http://lulpix.com)并解析 HTML 并从以下部分获取 img src

<div class="pic rounded-8" style="overflow:hidden;"><div style="margin:0 0 36px 0;overflow:hidden;border:none;height:474px;"><img src="**http://lulpix.com/images/2012/April/13/4f883cdde3591.jpg**" alt="All clogged up" title="All clogged up" width="319"/></div></div>

当然,每次加载页面时它都会有所不同,因此我无法为异步图像库提供直接的 URL,而这正是我想要做的,例如

加载页面 > 解析 img src > 下载 ASync 到 imageview > 重新加载 lulpix.com > 重新开始

然后将它们中的每一个放置在图像视图中,用户可以从中左右滑动进行浏览。

所以,这里的 TL;DR 是,我如何解析 html 以检索 URL,以及是否有人有使用库来显示图像的经验。

非常感谢你。


这是一个连接到 lulpix 的 AsyncTask,伪造了一个引荐来源网址和用户代理(lulpix 显然试图用一些相当蹩脚的检查来阻止抓取)。像这样开始在你的Activity:

new ForTheLulz().execute();

所结果的Bitmap以相当蹩脚的方式下载(没有缓存或检查图像是否已经是 DL:ed)并且错误处理总体上几乎不存在 - 但基本概念应该没问题。

class ForTheLulz extends AsyncTask<Void, Void, Bitmap> {
        @Override
        protected Bitmap doInBackground(Void... args) {
            Bitmap result = null;
            try {
                Document doc = Jsoup.connect("http://lulpix.com")
                        .referrer("http://www.google.com")
                        .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                        .get();
                        //parse("http://lulpix.com");
                if (doc != null) {
                    Elements elems = doc.getElementsByAttributeValue("class", "pic rounded-8");
                    if (elems != null && !elems.isEmpty()) {
                        Element elem = elems.first();
                        elems = elem.getElementsByTag("img");
                        if (elems != null && !elems.isEmpty()) {
                            elem = elems.first();
                            String src = elem.attr("src");
                            if (src != null) {
                                    URL url = new URL(src);
                                    // Just assuming that "src" isn't a relative URL is probably stupid.
                                    InputStream is = url.openStream();
                                    try {
                                        result = BitmapFactory.decodeStream(is);
                                    } finally {
                                        is.close();
                                    }
                            }
                        }
                    }
                }
            } catch (IOException e) {
                // Error handling goes here
            }
            return result;
        }
        @Override
        protected void onPostExecute(Bitmap result) {
            ImageView lulz = (ImageView) findViewById(R.id.lulpix);
            if (result != null) {
                lulz.setImageBitmap(result);
            } else {
                //Your fallback drawable resource goes here
                //lulz.setImageResource(R.drawable.nolulzwherehad);
            }
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

需要从HTML页面解析图像src然后显示它 的相关文章

随机推荐

  • !in_array 在 PHP 中的使用 - 条件语句

    我想看看如何使用 in array 我有这段代码 但它不起作用 while row mysql fetch assoc result if in array row item output output row print json enc
  • WPF:选择组合框的可编辑文本框中的所有文本并将焦点设置为

    我有一个WPFComboBox其中有它的IsEditable属性绑定到视图模型 可以打开和关闭它 当它打开时 我想将焦点放在ComboBox并选择编辑中的所有文本TextBox 我看不出实现这一目标的最佳方法 我应该更换ControlTem
  • Python 正则表达式中的反斜杠转义序列和单词边界

    目前使用re sub re escape andrew SUB stringVar 预期行为 stringVar andrew re sub re escape andrew SUB stringVar Returns SUB 意外行为 s
  • 从 iPhone 发送帖子数据

    我想从 iPhone 发送帖子数据 我必须发送一本包含 8 个 k v 对的字典 K V 对 从 Iphone 发布所有这 8 个 K V 对的最佳方式是什么 我希望我应该在 URL 中仅传递 Id K V 对之一 其余的 K V 对应该通
  • 下标超出范围运行时错误9

    我正在创建一个函数 该函数从两个 Excel 文件中读取列标题 然后将这些列标题放入复选框中 以便用户可以检查他将使用哪些列 当我使用一个文件执行此操作时它可以工作 但是当我修改它以使用两个文件时 我收到 运行时错误 9 下标超出范围 并突
  • 如何从变量中的 id 获取 unicode 字符?

    我正在尝试生成一个包含每个 Unicode 变量的文件 我已经能够将 unicode 提高到 U FFFF 但是我需要将其提高到 U 231F4 我尝试过寻找答案 但是当符号 id 位于变量中而不是仅仅键入时 它们都不起作用 现在 我有这个
  • 如何从weblogic中jms模块的资源摘要表中获取jms队列列表?

    我需要打印 jms 模块的 jms 队列列表 我使用此代码来查找所需的队列并获取参数 但如何获取所有队列的名称并打印它们 Properties env new Properties env put Context PROVIDER URL
  • 使用 .htaccess 和 mod_rewrite 强制使用 SSL/https

    如何使用 PHP 中特定的 htaccess 和 mod rewrite 页面强制使用 SSL https 对于 Apache 您可以使用mod ssl强制使用 SSLSSLRequireSSL Directive 除非为当前连接启用了基于
  • 使用未分配的局部变量?

    Visual Studio 一直说Use of unassigned variable for iVal and iNumber 谁能告诉我哪里错了 这是一段代码 要求用户不断输入整数并将它们相加 直到用户想要停止为止 然后整数的总和显示在
  • 如何在使用 UI 生成器创建的渲染器中添加动态数据?

    如何在使用 UI 生成器创建的渲染器中添加动态数据 从 ui 构建器创建渲染并使用动态数据填充列表 protected boolean initListModelList List cmp cmp setModel new com code
  • itext - 添加无边框的 png 图像

    我想将以下 png 图像添加到我的 pdf 中 我使用以下代码来做到这一点 Image img PngImage getImage filename img setBorder Image NO BORDER img setAlignmen
  • Python3.5 和 FF48 的 Selenium WebDriver 出现“无法加载配置文件”错误

    我正在尝试将 Selenium 与 Python 一起使用 因此 我编写了以下代码并保存为名为的文件test py在工作目录中 用户 ykt68 seleniumwork ykt68 macbp15 seleniumwork pwd Use
  • Flutter for Linux 构建失败

    任何启用了 Linux 的 Flutter 应用程序的 Linux 构建都会导致以下错误 flutter run d linux Launching lib main dart on Linux in debug mode snap flu
  • 在 Windows 上安装 Tensorflow 错误

    Tensorflow 现已在 Windows 上可用 https developers googleblog com 2016 11 tensorflow 0 12 adds support for windows html 我使用pip安
  • 在oracle SP中用更大的数据类型替换varchar2

    我使用的是oracle版本10 PL SQL 中有使用 varchar2 变量的存储过程 该代码不断附加 varchar2 变量 当 varchar2 变量大小超过 32767 时 它无法附加任何更多值 现在我想将数据类型更改为long或c
  • 通过字符串过滤 json 数组 php

    我有一个 JSON 数组 使用json decode 设置数据 我正在寻找匹配数组中的某个项目 如果它匹配 我需要返回数组的整个 行 而不仅仅是像我找到的所有 filter array 片段那样的单个字段 有人能指出我正确的方向吗 调用前数
  • 使用 HttpURLConnection 进行 NTLM 身份验证

    有没有办法实现 NTLM 身份验证HttpURLConnection 目前我已经实现了它DefaultHttpClient and JCIFSEngine对于认证方案 我的灵感是 Android NTLM 身份验证 ksoap 和持久连接
  • sysinfo 系统调用未返回正确的 freeram 值

    我最近使用 sysinfo 系统调用编写了以下 C 代码来显示系统统计信息 有趣的是 sysinfo 结构的 freeram 变量不返回可用 RAM 的数量 而是返回当前 RAM 使用情况 我必须使用一种解决方法 通过从总内存中减去自由内存
  • 如何在本地备份本地 Docker 注册表的镜像?

    如何创建一个本地注册表容器从主机安装卷并在本地保留所有提取的映像 具有持久镜像的本地 Docker 注册表 应该可以有一个临时注册表容器 及其 docker 卷 从而允许不要多次下载图像 即使在注册表 或整个 Docker VM 被丢弃并重
  • 需要从HTML页面解析图像src然后显示它

    我目前正在尝试开发一个应用程序 它可以访问以下网站 http lulpix com 并解析 HTML 并从以下部分获取 img src div class pic rounded 8 div style margin 0 0 36px 0