酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

java实现递归爬取国家统计局地区<tr><td>信息

以下是一个递归爬取国家统计局地区信息的 Java 实现例子: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Main { public static void main(String[] args) { String url = "http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/"; List<AreaInfo> areaList = getAreaInfo(url, ""); for (AreaInfo area : areaList) { System.out.println(area); } } public static List<AreaInfo> getAreaInfo(String url, String parentCode) { List<AreaInfo> areaList = new ArrayList<>(); try { Document doc = Jsoup.connect(url).get(); Elements trElements = doc.select("tr[class='citytr']"); for (Element trElem : trElements) { String code = trElem.child(0).text(); String name = trElem.child(1).text(); String link = trElem.select("a").attr("href"); AreaInfo area = new AreaInfo(code, name, parentCode); areaList.add(area); if (!link.isEmpty()) { String childUrl = url + link; List<AreaInfo> childList = getAreaInfo(childUrl, code); areaList.addAll(childList); } } } catch (IOException e) { e.printStackTrace(); } return areaList; } public static class AreaInfo { private String code; private String name; private String parentCode; public AreaInfo(String code, String name, String parentCode) { this.code = code; this.name = name; this.parentCode = parentCode; } @Override public String toString() { return "AreaInfo{" + "code='" + code + '\'' + ", name='" + name + '\'' + ", parentCode='" + parentCode + '\'' + '}'; } } } ``` 上述代码使用 Jsoup 库来解析 HTML 页面,并实现了一个递归函数 `getAreaInfo` 来爬取区域信息。在 `getAreaInfo` 函数中,首先通过提供的 URL 获取页面内容,然后使用 Jsoup 的选择器语法来定位地区信息所在的 `<tr>` 元素,解析其中的区域代码、名称和链接。然后,将这些信息构造成一个 `AreaInfo` 对象,并添加到结果列表中。如果该地区还有子地区,就递归调用 `getAreaInfo` 函数来获取子地区信息,并将其添加到结果列表中。 上面的例子爬取的是国家统计局地区信息的示例网站(http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2019/),你可以根据自己的需求修改 URL 和解析的元素选择器来适应其他网站的结构。 [2024-05-20 14:15:53 | AI写代码神器 | 1006点数解答]

相关提问