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

标签 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));
        }
    }
}

编辑:我更改了标题,因为问题的解决方案实际上与旧倾斜的细节无关。这是

How to get location and operator of mobile number using java program?

最佳答案

我查看了浏览器中的网络流量,并将其与通过代码获得的文档进行了比较。事实证明,网络服务器使用 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/

关于java - JSoup 内容与使用桌面 Web 浏览器时不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754166/

相关文章:

java - 如何从android向servlet发送带有参数的请求

python - 我可以检索 Twitter 卡标题和媒体 URL 吗?

python - Splinter:按风格查找

java - 静电不好吗?如何删除静态变量?

java - 输出最终对象的 JVM 选项

java - 如何使用PDFBox向PDF添加背景图像?

php - Rest Api 的服务器端实现

url - Go url.Parse(string) 因某些用户名或密码而失败

java - 如何确定 url http ://www. test.com/abc.pdf 是文件还是目录?

html - 从网页中提取背景图像/解析 HTML+CSS