【问题标题】:JSoup content is not the same as when using a desktop web browserJSoup 内容与使用桌面网络浏览器时的内容不同
【发布时间】:2015-09-24 05:44:38
【问题描述】:

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

【问题讨论】:

  • 你期待什么?你得到什么错误?您可以在这里分享任何 StackTrace 吗?

标签: java url web-scraping jsoup


【解决方案1】:

我查看了浏览器中的网络流量,并将其与您使用代码获得的文档进行了比较。事实证明,网络服务器使用 userAgent 字符串来处理某些事情,并且必须将其设置为通用网络浏览器。幸运的是你可以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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2017-03-20
    • 2021-04-25
    • 2012-07-24
    • 1970-01-01
    • 2014-08-10
    • 1970-01-01
    相关资源
    最近更新 更多