Android Studio中使用Java Jsoup爬取网页表格全部行的问题求助
修复方案
你当前仅能获取奇数行是因为选择器只匹配了griderow1类的行,调整选择器匹配两类数据行、同时修正原有代码的提取逻辑即可拿到全部数据:
- 调整tr选择器,匹配所有数据行:使用
tr.griderow1, tr.griderow2或者通用匹配tr[class^="griderow"],可以同时命中奇数行和偶数行,自动跳过表头的grideheader行 - 修正日期提取逻辑:原代码直接取所有td的文本会把序号、日期、标题拼接在一起,要单独取第二个td的文本作为日期
- 修正链接提取逻辑:
griderow1是tr的类,不是td的类,直接从当前tr下查找a标签取href属性即可
修正后的doInBackground代码
@Override protected Void doInBackground(Void... voids) { try { String url = "https://jntuh.ac.in/bulletins"; Document doc = Jsoup.connect(url).get(); Element table = doc.select("table.tableborder").first(); // 选择所有数据行,同时匹配griderow1和griderow2 for (Element tr : table.select("tr.griderow1, tr.griderow2")) { // 取第二个td的内容作为日期,索引从0开始,第二个对应索引1 String date = tr.select("td").get(1).text(); // 直接从当前tr下找a标签取href String bulletin = tr.select("a").attr("href"); jntuhBulletinModels.add(new JNTUHBulletinModel(date, bulletin)); Log.d("items", "date: " + date + " bulletin: " + bulletin); } } catch (IOException e) { e.printStackTrace(); } return null; }
内容的提问来源于stack exchange,提问作者Shahzeb Mehdi
相关产品推荐
相关产品推荐

