我正在开展一个项目。我需要弄清楚用户输入的电话号码的状态和运营商。我尝试使用jsoup创建url连接并尝试检索位置和运算符。但它没有用。
代码是:
public class WebScraper {
public static void main(String args[]) throws IOException {
//String url;
String mobileNumber = "9566171277";
String url ="http://trace.bharatiyamobile.com/?numb="+mobileNumber;
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("span.bluetext");
// Elements media = doc.select("[src]");
// Element imports = doc.select("div.eachStory").first();
//Elements resultLinks = doc.select("table>tbody>tr");
// PrintWriter out = new PrintWriter(new BufferedWriter(new
// FileWriter("Data.txt", true)));
for (int i = 0; i < links.size(); i++) {
System.out.println(links.get(i).text());
// out.println(resultLinks.get(i));
}
}
}
编辑:我更改了标题,因为问题的解决方案实际上与旧的倾斜的细节无关。这是
如何使用java程序获取手机号码的位置和操作员?
答案 0 :(得分:3)
我查看了浏览器中的网络流量,并将其与您使用代码获得的文档进行了比较。事实证明,Web服务器使用userAgent字符串作为某些内容,并且必须将其设置为常见的Web浏览器。幸运的是,你可以do this in Jsoup。如果您尝试这样做有效:
String ua = "Mozilla/5.0 ;Windows NT 6.1; "
+ "WOW64; AppleWebKit/537.36 ;KHTML, like Gecko; "
+ "Chrome/39.0.2171.95 Safari/537.36";
Document doc = Jsoup.connect(url)
.userAgent(ua)
.get();
Elements links = doc.select("span.bluetext");
可以在网络的许多地方找到常见的userAgent字符串,例如http://whatsmyuseragent.com/CommonUserAgents或http://www.useragentstring.com/pages/Firefox/