我想使用jsoup在我的android应用上获取新闻

时间:2019-05-30 02:00:16

标签: android jsoup

我有一个问题,我想使用jsoup捕获新闻,但总是失败。
这是新闻网站。
https://www3.nhk.or.jp/news/

这是我的照片。我要圈的是我想要的数据。
https://drive.google.com/open?id=1KJAyOSdHO8APPD6_A9MjxkoFjekcQLXt

但是不管我做什么。总是得到错误的数据或为空。
这是我的程序。

public class News extends AppCompatActivity {
Button ok;
private static final String url ="https://www3.nhk.or.jp/news/";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.news);
ok=(Button)findViewById(R.id.ok);
ok.setOnClickListener(okbtn);
}
private Button.OnClickListener okbtn=new Button.OnClickListener(){
public void onClick(View v){
try{
Connection.Response response = Jsoup.connect(url).execute();
String body = response.body();
Document data = Jsoup.parse(body);//visible-phone print_hide
Elements country=data.select("main");
Elements main=data.select("div[id=module module--news-main index-main]");

for(Element e1: country)
{
mytoast(e1+"");
}
}
catch(Exception ex){ex.printStackTrace() ;}
}
};
private void mytoast(String str)
{
Toast toast=Toast.makeText(this, str, Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
}
}

请帮助我 谢谢

1 个答案:

答案 0 :(得分:1)

您可以尝试首先查看它的HTML。

如果看不到,请不要使用jsoup

其注释中有一个小提示:

  

このページではJavaScriptを使用しています

     

=>这是由JavaScript生成的

如果已生成,则无法从Jsoup中找到它。

在这种情况下,我将使用Chrome的工具来监视XHR标签

GUIDE

查看每个XHR请求,并找到最可能的请求,

例如,我看到了

https://www3.nhk.or.jp/news/json16/syuyo.json?_=1559183885640

部分回复:

"id":"193411",
"title":"三菱UFJ銀行 新規口座は原則デジタル通帳に",
"pubDate":"Thu, 30 May 2019 04:03:11 +0900",
"cate":"5",
...
"id":"193437",
"title":"エアレース世界選手権 今季限りで終了",
"pubDate":"Thu, 30 May 2019 09:40:37 +0900",

这正是您想要的。它来自另一个链接!

您不需要Jsoup,只需Http获取链接

https://www3.nhk.or.jp/news/json16/syuyo.json?_=1559183885640

我认为数字看起来像UnixTime,

所以我检查当前时间是:1559184830782,就是这样。

只需将该链接用作API,并将time用作参数。