JSoup内容与使用桌面Web浏览器时不同

时间:2015-09-24 05:44:39

标签: java url web-scraping jsoup

我正在开展一个项目。我需要弄清楚用户输入的电话号码的状态和运营商。我尝试使用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程序获取手机号码的位置和操作员?

1 个答案:

答案 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/CommonUserAgentshttp://www.useragentstring.com/pages/Firefox/