Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.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
如何在android编程中使用jsoup从html获取此脚本_Android_Html_Json_Jsoup - Fatal编程技术网

如何在android编程中使用jsoup从html获取此脚本

如何在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": {

我想通过html页面中的jsoup脚本中获取字符串值。但也存在一些问题:

  • 那一页有六个短文。我想用jsoup(我的意思是数字4)在所有的中选择第四个。我不知道该怎么做
  • 脚本中有一个键,我想捕捉该键的值
  • 在这里您可以看到想要的脚本:

    <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);  
    }