我有一个问题,我想使用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();
}
}
请帮助我 谢谢
答案 0 :(得分:1)
您可以尝试首先查看它的HTML。
如果看不到,请不要使用jsoup 。
其注释中有一个小提示:
このページではJavaScriptを使用しています
=>这是由JavaScript生成的
如果已生成,则无法从Jsoup中找到它。
在这种情况下,我将使用Chrome的工具来监视XHR标签
查看每个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
用作参数。