如何在android编程中使用jsoup从html获取此脚本
我想通过html页面中的jsoup从脚本中获取字符串值。但也存在一些问题:如何在android编程中使用jsoup从html获取此脚本,android,html,json,jsoup,Android,Html,Json,Jsoup,我想通过html页面中的jsoup从脚本中获取字符串值。但也存在一些问题: 那一页有六个短文。我想用jsoup(我的意思是数字4)在所有的中选择第四个。我不知道该怎么做 脚本中有一个键,我想捕捉该键的值 在这里您可以看到想要的脚本: <script type="text/javascript">window._sharedData={ "entry_data": { "PostPage": [ { "media": {
<script type="text/javascript">window._sharedData={
"entry_data": {
"PostPage": [
{
"media": {
"key": "This is the key and i wanna catch it!!!",
},
}
]
},
};</script>
窗口。\u共享数据={
“输入数据”:{
“延期”:[
{
“媒体”:{
“钥匙”:“这是钥匙,我想抓住它!!!”,
},
}
]
},
};
我尝试了很多方法,但都没有成功
我正在寻找答案,所以请不要让我失望 JSoup只会帮助您以字符串的形式获取脚本标记的内容。它解析HTML,而不是JavaScript脚本内容。因为在您的例子中,脚本的内容是JSON表示法中的一个简单对象,所以您可以在获取脚本字符串并剥离变量赋值后使用JSON解析器。在下面的代码中,我使用解析器
请提供该网站的链接,以便我可以为您检查问题。非常感谢。老实说,我想从instagram页面上得到“标题”。请看一看,告诉我最好的方法是什么。请在谷歌浏览器中粘贴这行:查看来源:“标题”?我不明白你需要提取什么信息。只要修改一下我的方法,你就可以了。谢谢你的赏识。这篇文章似乎有点不知所措:)非常感谢!它起作用了。对你是真的!我迷路了!但我有一个小问题,我不知道如何制作图案。你能介绍一个好的培训来源吗?
String html = "<script></script><script></script><script></script>"
+"<script type=\"text/javascript\">window._sharedData={"
+" \"entry_data\": {"
+" \"PostPage\": ["
+" {"
+" \"media\": {"
+" \"key\": \"This is the key and i wanna catch it!!!\","
+" },"
+" }"
+" ]"
+" },"
+"};</script><script></script>";
Document doc = Jsoup.parse(html);
//get the 4th script
Element scriptEl = doc.select("script").get(3);
String scriptContentStr = scriptEl.html();
//clean to get json
String jsonStr = scriptContentStr
.replaceFirst("^.*=\\{", "{") //clean beginning
.replaceFirst("\\;$", ""); //clean end
JSONObject jo = (JSONObject) JSONValue.parse(jsonStr);
JSONArray postPageJA = ((JSONArray)((JSONObject)jo.get("entry_data")).get("PostPage"));
JSONObject mediaJO = (JSONObject) postPageJA.get(0);
JSONObject keyJO = (JSONObject) mediaJO.get("media");
String keyStr = (String) keyJO.get("key");
System.out.println("keyStr = "+keyStr);
Pattern p = Pattern.compile(
"media[\":\\s\\{]+key[\":\\s\\{]+\"([^\"]+)\"",
Pattern.DOTALL);
Matcher m = p.matcher(html);
if (m.find()){
String keyFromRE = m.group(1);
System.out.println("keyStr (via RegEx) = "+keyFromRE);
}