提问人:laguro 提问时间:9/24/2023 最后编辑:laguro 更新时间:9/26/2023 访问量:72
Jsoup 解析仅输出 null
Jsoup parsing just output null
问:
我制作了一个应用程序来从我的奥林巴斯相机获取原始文件。 我可以通过 wifi 连接到它并转到 192.168.0.10 或 oishare/DCIM/100OLYMP 以获取图片列表,但是当我点击其中一些时,我只能获得预览,所以我只需要将 oishare/DCIM/100OLYMP/FILE.html?/DCIM/100OLYMP/ 替换为 oishare/DCIM/100OLYMP/ 即可下载原始文件。因此,应用程序只需替换此页面上的所有链接并将其显示在屏幕上即可。 听起来很简单。
所以我连接了 JSOUP:
实现'org.jsoup:jsoup:1.16.1' 并从官方网站下载此版本
接下来,我创建了一个 HtmlParser Java 类:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class HTMLParser {
public String getHTML(String url) {
try {
Document doc = Jsoup.connect("oishare/DCIM/100OLYMP").get();
return doc.html();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
然后在主要活动中,我添加
package com.oly.rawshare;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
HTMLParser parser = new HTMLParser();
String htmlCode = parser.getHTML("oishare/DCIM/100OLYMP");
if (htmlCode != null) {
htmlCode = htmlCode.replace("<img src=\"100OLYMP_files/title.gif\" width=\"300px\" height=\"27px\" alt=\"TITLE\">\n<hr color=\"#2E2E2E\">\n<div style=\"position: relative;\">\n<div style=\"background-color: #2E2E2E; padding: 10px; margin-bottom: 10px; border: 1px solid #2E2E2E;\">\n<div align=\"left\">\n<font color=\"#929292\">></font><a href=\"oishare/DCIM\"><font color=\"#929292\">DCIM</font></a><font color=\"#929292\">></font>\n<script type=\"text/javascript\">\nvar path = location.pathname;\nvar dcf = path.split(\"/\");\ndocument.write('<font color=\"#929292\">'+dcf[2]+'</font>');\n</script><font color=\"#929292\">100OLYMP</font>\n\n<br>\n</div>\n</div>\n</div>\n", "");
htmlCode = htmlCode.replace("oishare/DCIM/100OLYMP/FILE.html?/DCIM/100OLYMP/", "oishare/DCIM/100OLYMP/");
}
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
webView.loadDataWithBaseURL(null, htmlCode, "text/html", "en_US", null);
}
}
但是由于未知原因,我只是在输出字符串:(中得到 null
是的。。。idk有什么问题,我无法解决它..
答:
1赞
Reilas
9/25/2023
#1
connect 方法会将值解析为 URL 对象,因此将引发 MalformedURLException。
例如。
URL url = new URL("oishare/DCIM/100OLYMP");
Exception in thread "main" java.net.MalformedURLException: no protocol: oishare/DCIM/100OLYMP
at java.base/java.net.URL.<init>(URL.java:764)
at java.base/java.net.URL.<init>(URL.java:646)
at java.base/java.net.URL.<init>(URL.java:582)
at Example.main(Example.java:12)
对文件使用 parse 方法。
d = Jsoup.parse(new File("oishare/DCIM/100OLYMP"));
评论
0赞
laguro
9/26/2023
是的,没有协议,因为如果我离开它,那么我的问题会被论坛视为垃圾邮件,当然有 http oishare/DCIM/100OLYMP
0赞
laguro
9/26/2023
哦,我不明白我做错了什么,我只是无法让它工作。我需要把这个代码行放在哪里?
评论
return null
e.printStackTrace();
public String getHTML(String url)
url
Document doc = Jsoup.connect("oishare/DCIM/100OLYMP").get();
Document doc = Jsoup.connect(url).get();