如何使用Java(Android)从网站中获取数据?
我的Android应用程序将从电话号码获取运营商信息。我打算使用Jsoup或另一个JavaHTML解析器来获取表中显示的运营商信息 我正试图从我的生活中吸取教训 查询URL格式为:如何使用Java(Android)从网站中获取数据?,java,android,web-scraping,jsoup,Java,Android,Web Scraping,Jsoup,我的Android应用程序将从电话号码获取运营商信息。我打算使用Jsoup或另一个JavaHTML解析器来获取表中显示的运营商信息 我正试图从我的生活中吸取教训 查询URL格式为: http://www.fonefinder.net/findome.php?npa=**first 3 digits**&nxx=**next 3 digits**&thoublock=**final 4 digits** 页面的HTML是一个简单的表格,请参见下文。我试图从第2行第5列中提取数据,
http://www.fonefinder.net/findome.php?npa=**first 3 digits**&nxx=**next 3 digits**&thoublock=**final 4 digits**
页面的HTML是一个简单的表格,请参见下文。我试图从第2行第5列中提取数据,在该列中有一个链接以
http://fonefinder.net/(CARRIER_NAME).php
其中,CARRIER_NAME是一个类似verizon的值。我需要帮助找出如何提取这些数据
<table border="3" cellspacing="2" cellpadding="2" bgcolor="#FFFFCC">
<tbody>
<tr bgcolor="#7093DB" align="CENTER">
<th>
Area Code
</th>
<th>Prefix</th>
<th>
City/Switch Name
<br>
(Click for city search)
</th>
<th>
State/Prov.
<br>
Area Map
</th>
<th>
Telephone Company
<br/>
Web link
</th>
<th>
Telco
<br/>
Type
</th>
<th>
Map/Zip
<br/>
Detail
</th>
</tr>
<tr>
<td>
**first 3 digits**
</td>
<td>
**next 3 digits**
</td>
<td>
City Name
</td>
<td>
State Name
</td>
<td>
<a href="http://fonefinder.net/CARRIER_NAME.PHP">carrier name</a>
</td>
<td>WIRELESS PROV</td>
<td>
map
</td>
</tr>
</tbody>
</table>
我编写的代码大量使用Jsoup的选择器语法按名称解析标记,但也可以按CSS类、id、属性等进行解析。具有您可以使用的选择器的完整列表
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class StackOverflowQuestion {
public static void main(String[] args) {
try {
// get the tables on this page, note I masked the phone number
Document doc = Jsoup.connect("http://www.fonefinder.net/findome.php?npa=###&nxx=###&thoublock=####").get();
Elements tables = doc.select("table");
// get the second table, 0 indexed
Element secondTable = tables.get(1);
// get the columns
Elements tds = secondTable.select("td");
//get the 5th column, 0 indexed
Element fifthTd = tds.get(4);
//get the link in this column
Element link = fifthTd.select("a").first();
//print out the URL
System.out.println(link.attr("href"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
你不是在几个小时前发布了同样的问题吗?!?如果我编写一个两行java代码,而不是使用任何第三方解析器来获取这些信息,这样可以吗?