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点数解答]
- <!DOCTYPE html> <html> <body> <h2 style="text-align:center">TAX INVOICE</h2> <table border="1" cellpadding="5"> <tr><th>Description</th><th>Qty</th><th>Unit Price (AU$)</th><th>Total (AU$)</th></tr> <tr><td>On-site Technical Service (2hrs)</td><td>1</td><td>150.00</td><td>300.00</td></tr> <tr><td>NVIDIA RTX 4070 Graphics Card</td><td>1</td><td>450.00</td><td>450.00</td></tr> <tr><td>System Update Service</td><td>1</td><td>50.00</td><td>50.00</td></tr> <tr><td colspan="3" (906点数解答 | 2025-07-14 12:32:02)92
- ```html <!DOCTYPE html> <html> <head> <style> table { border-collapse: collapse; width: 80%; margin: auto; } th, td { border: 1px solid black; padding: 8px; text-align: center; } th { background-color: #f2f2f2; } caption { font-size: 1.5em; font-weight: bold; margin-bottom: 10px; } </style> </head> <body> <table> <caption>故障诊断方法结果对照表</caption> <thead> <tr> <th>诊断方法</th> <th>诊断结果</th> <th>结论/操作</th> </tr> </thead> <tbody> <tr> <td ro(706点数解答 | 2025-07-03 09:05:13)78
- import javax.swing.*; import java.awt.*; import java.awt.datatransfer.clipboard; import java.awt.datatransfer.stringselection; import java.awt.datatransfer.transferable; import java.awt.event.*; import java.io.*; import java.nio.file.files; import java.nio.file.path; import java.nio.file.paths; import java.time.localdatetime; import java.util.hashmap; import java.util.list; import java.util.map; import java.util.random; public class copy { static private final jtextarea textarea = new jtext(1497点数解答 | 2024-08-25 09:40:33)321
- java实现递归爬取国家统计局地区<tr><td>信息(1006点数解答 | 2024-05-20 14:15:53)221
- dm.jdbc.driver.dmexception: 数据溢出 at dm.jdbc.driver.dberror.throwexception(dberror.java:636) at dm.jdbc.c.b.p.s(msg.java:225) at dm.jdbc.c.b.p.p(msg.java:185) at dm.jdbc.c.b.p.o(msg.java:166) at dm.jdbc.c.a.a(dbaccess.java:776) at dm.jdbc.c.a.a(dbaccess.java:327) at dm.jdbc.c.a.a(dbaccess.java:435) at dm.jdbc.driver.dmdbpreparedstatement.executeinner(dmdbpreparedstatement.java:284) at dm.jdbc.driver.dmdbpreparedstatement.do_executequery(dmdbpreparedstatement.java:383) at dm.jdbc.driver.(598点数解答 | 2024-10-15 15:48:38)224
- 问题排查:dm.jdbc.driver.dmexception: 数据溢出 at dm.jdbc.driver.dberror.throwexception(dberror.java:636) at dm.jdbc.c.b.p.s(msg.java:225) at dm.jdbc.c.b.p.p(msg.java:185) at dm.jdbc.c.b.p.o(msg.java:166) at dm.jdbc.c.a.a(dbaccess.java:776) at dm.jdbc.c.a.a(dbaccess.java:327) at dm.jdbc.c.a.a(dbaccess.java:435) at dm.jdbc.driver.dmdbpreparedstatement.executeinner(dmdbpreparedstatement.java:284) at dm.jdbc.driver.dmdbpreparedstatement.do_executequery(dmdbpreparedstatement.java:383) at dm.jdbc.dr(403点数解答 | 2024-10-15 15:48:41)913
- <!DOCTYPE html> <html> <head> <style> .three-line-table { border-collapse: collapse; width: 100%; margin: 20px 0; font-family: Arial, sans-serif; } .three-line-table th, .three-line-table td { padding: 12px; text-align: left; border-bottom: 1px solid #ddd; } .three-line-table th { border-top: 2px solid #333; border-bottom: 2px solid #333; background-color: #f5f5f5; } .three-line-table tr:last-child td { border-bottom: 2px solid #333; } a { color: #0066cc; text-decoratio(75点数解答 | 2025-03-13 23:16:59)167
- 1.定义一个抽象类,并设计两个子类继承该抽象类,演示它们的使用。 具体过程为,定义一个类vehicle并将它声明为抽象类。在类vehicle中声明一个infoofwheels方法,返回值为字符串类型。创建两个类car和motorbike从vehicle类继承而来,并在这两个类中实现info0fwheels方法。在car类中,应当返回“四轮车”信息:而在motorbike类中,应当返回“双轮车”信息。创建另一个带main方法的测试类test,在该类中创建car和motorbike的实例,并在控制台分别显示它们返回的信息。(440点数解答 | 2024-06-06 23:18:54)223
- 1.使用pandas库读取数据“data.csv”,展示其前5行数据。 2.对数据进行探索,查看数据类型、缺失值以及数据基本的数值统计详细信息。 3.对数据data日期格式数据做日期转换。 4.查看data**信息统计情况。 (1)查看发布**信息中所在城市city的岗位数量统计信息,统计**信息较多的前五名城市。 (2)保留学历是本科和大专的**信息. 0618220232 061822( (3)修改“district”列,如“高新区”,需要改成“成都-高新区” (4)找出"positionadvantage”职位优势这一列中有“双休”条件的**信息,在所有发布的**信息中的占比,保留2位小数。(5)根据“salary”工资列,新增最低工资和最高工资两列,列名分别设置为“最低工资”和“最高工资”,(如10k-30k,则最低 工资为10k,最高工资为20k) 5.对数据data作统计分析(642点数解答 | 2024-06-30 15:39:49)257
- 1.使用pandas库读取数据“data.csv”,展示其前5行数据。 2.对数据进行探索,查看数据类型、缺失值以及数据基本的数值统计详细信息。 3.对数据data日期格式数据做日期转换。 4.查看data**信息统计情况。 (1)查看发布**信息中所在城市city的岗位数量统计信息,统计**信息较多的前五名城市。 (2)保留学历是本科和大专的**信息. 0618220232 061822( (3)修改“district”列,如“高新区”,需要改成“成都-高新区” (4)找出"positionadvantage”职位优势这一列中有“双休”条件的**信息,在所有发布的**信息中的占比,保留2位小数。(5)根据“salary”工资列,新增最低工资和最高工资两列,列名分别设置为“最低工资”和“最高工资”,(如10k-30k,则最低 工资为10k,最高工资为20k) 5.对数据data作统计分析(1)统计分析各城市**数量分布图(2)**学历占比图 **学历占比图(3)通过**学历分析图,给出你对**发布情况的分析结论.(4)统计每一天发布的**数量图,按天来统计(提示:需要先将时间按每天来统(1539点数解答 | 2024-06-30 15:56:50)266
- java 扒网站<tr><td>内容(413点数解答 | 2024-05-20 10:47:05)185
- java 扒网站<tr><td>内容(587点数解答 | 2024-05-20 10:59:04)179