我找到了一个网站,我可以在丹麦查找车辆检查。我需要从页面中提取一些信息并循环浏览一系列牌照。让我们以这辆车为例:http://selvbetjening.trafikstyrelsen.dk/Sider/resultater.aspx?Reg=as87640
在左侧表格中,您可以看到有关车辆的一些基本信息。在右侧,您可以看到此特定车辆的检查列表。我需要一个脚本,可以检查汽车是否有任何检查,然后获取每个检查报告的链接。让我们从示例中进行第一次检查。我想从每次检查中提取onclick文本。
第一个检查链接是: 的 location.href = “/ Sider的/ synsrapport.aspx检验= 18014439&安培; VIN = VF7X1REVF72378327”
或者如果您可以立即从URL中提取检查ID和Vin变量:
检验ID: 18014439
Vin: VF7X1REVF72378327
以下是尚未进行任何检查的汽车示例,如果您想查看其外观:http://selvbetjening.trafikstyrelsen.dk/Sider/resultater.aspx?Reg=as87400
当前解决方案计划:
在VB.net中将HTML源代码下载为String
搜索字符串并提取特定部分。
将其存储在StringBuilder中并将其上传到我的SQL服务器
这是最有效的方式,还是您知道用于从VB.net中的网站特定提取元素的任何库!谢谢!
答案 0 :(得分:1)
您可以使用Java库HtmlUnit或Jsoup来对网页进行网页抓取。 以下是使用HtmlUnit的示例:
LogFactory.getFactory().setAttribute("org.apache.commons.logging.Log", "org.apache.commons.logging.impl.NoOpLog");
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(Level.OFF);
java.util.logging.Logger.getLogger("org.apache.commons.httpclient").setLevel(Level.OFF);
WebClient client = new WebClient(BrowserVersion.CHROME);
client.getOptions().setJavaScriptEnabled(true);
client.getOptions().setThrowExceptionOnScriptError(false);
client.getOptions().setThrowExceptionOnFailingStatusCode(false);
HtmlPage page = client.getPage("http://selvbetjening.trafikstyrelsen.dk/Sider/resultater.aspx?Reg=as87640");
HtmlTable inspectionsTable = (HtmlTable) page.getElementById("tblInspections");
Map<String, String> inspections = new HashMap<String, String>();
for (HtmlTableRow row: inspectionsTable.getRows()) {
String[] splitRow = row.getAttribute("onclick").split("=");
if (splitRow.length >= 4) {
String id = splitRow[2].split("&")[0];
String vin = splitRow[3].replace("\"", "");
inspections.put(id, vin);
System.out.println(id + " " + vin);
}
}