zoukankan      html  css  js  c++  java
  • 关于java获取网页内容

    最近项目需求,做一些新闻站点的爬取工作。
    1.简单的jsoup爬取,静态页面形式;

    String url="a.atimo.cn";//静态页面链接地址
    Document doc = Jsoup.connect(url).userAgent("Mozilla").timeout(4000).get();
    if(doc!=null){ Elements es = doc.select("div.comments>ul>li");// System.out.println(es); if(es!=null && es.size()>0){ for (Element element : es) { String link = element.select("div>h3").attr("href"); String title = element.select("div>h3").text(); String author = element.select("div.c-abstract>em").text(); String content = element.select("dd>a>div.icos>i:eq(1)").text(); } } }

    通过jsop解析返回Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

    2.延时加载,有些网站存在延时加载,表格内容,或者嵌入页面形式的加载的页面;
    属于jsop范围

            //构造一个webClient 模拟Chrome 浏览器
            String url = "https://www.cnblogs.com/atimo/";
            WebClient webClient = new WebClient(BrowserVersion.CHROME);
            //支持JavaScript
            webClient.getOptions().setUseInsecureSSL(true); 
            webClient.getOptions().setJavaScriptEnabled(true);
            webClient.getOptions().setCssEnabled(false);
            webClient.getOptions().setActiveXNative(false);
            webClient.getOptions().setCssEnabled(false);
            webClient.getOptions().setThrowExceptionOnScriptError(false);
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
            webClient.getOptions().setTimeout(3000000);
            HtmlPage rootPage = webClient.getPage(url);
            String html = rootPage.asXml();
            Document document = Jsoup.parse(html);
            Elements es = document.select("div.comments");//.select("#content_left");
            System.out.println(es);
            if(es!=null && es.size()>0){
                for (Element element : es) {
                String link = element.select("div.f13>a").attr("href");
                String title = element.select("div>h3>a").text();
                String text = element.select("div.c-abstract>em").text();
            }
            }    

    获取到的是Document 使用标签选择器,选择页面标签中的值,即可获取页面内容。

    3.获取评论或其他内容,返回json数据;js请求
    普通请求,只需要使用
     HttpURLConnection connection = createRequest(url, "GET");
      
    // 建立实际的连接 connection.connect();
     
    发送GET请求过去json数据后解析即可;
    4.js请求带请求头参数(部分为移动端请求)

                CloseableHttpClient https = HttpClients.createDefault();
                String url = "https://action=hene=124&devicetype=androidlag=zh_CN&nettyene=3&pass_ticwx_header=1";
                HttpGet httpPost = new HttpGet(url);
                httpPost.addHeader("Host", "mp.weixin.qq.com");
                httpPost.addHeader("x-wechat-uin", wechartCookie.getUin());
                httpPost.addHeader("x-", "参数");
                HttpResponse response = https.execute(httpPost);
                HttpEntity entitySort = response.getEntity();
                String html = EntityUtils.toString(entitySort, "utf-8");

    请求头参数根据抓包工具拦截的请求时需要的参数变更;

     

  • 相关阅读:
    swift判断是不是刘海屏
    swift 获取缓存 删除缓存
    iOS推送接入 获取devicetoken 证书报错解决方法:Code=3000 "未找到应用程序的“aps-environment”的授权字符串" 解决办法
    iOS 判断设备网络是否使用代理
    iOS接入阿里云一键登录,号码认证
    python代码实现回归分析--线性回归
    【优博微展2019】王景璟:异构信息网络协同优化基础理论和应用 开题报告-毕业答辩
    摘要与引言基本要求1
    深度学习理论与架构最新进展综述论文,66页pdf,333篇参考文献
    论文引言的逻辑结构
  • 原文地址:https://www.cnblogs.com/atimo/p/10006820.html
Copyright © 2011-2022 走看看