zoukankan      html  css  js  c++  java
  • 爬虫

    爬虫Jsoup

    Demo

    <!--		解析网页 只是解析网页  音乐和电影taki了解下-->
    		<dependency>
    			<groupId>org.jsoup</groupId>
    			<artifactId>jsoup</artifactId>
    			<version>1.10.2</version>
    		</dependency>
    
    package com.example.demo.utils;
    
    import com.example.demo.pojo.Content;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.List;
    
    public class HtmlParseUtil {
        public static void main(String[] args) throws Exception {
            new HtmlParseUtil().parseJD("java");
        }
    
        public List<Content> parseJD(String keyWords) throws Exception {
            //        获取请求 https://search.jd.com/Search?keyword=java
    //        前提是 需要联网  【ajax不能获取到,模拟浏览器才能获取到】
            String url = "https://search.jd.com/Search?keyword=" + keyWords;
    //      解析网页 (Jsoup 返回的Document就是浏览器Document对象)
            Document document = Jsoup.parse(new URL(url), 30000);
    //        所有在js中可以使用的方法,这里都能用
            Element element = document.getElementById("J_goodsList");
    
            System.out.println(element.html());
    
    //        获取所有的li元素
            Elements elements = element.getElementsByTag("li");
    
            ArrayList<Content> goodsList = new ArrayList<>();
    
    //        获取元素中的内容,这里el 就是每一个li标签了
            for (Element el : elements) {
    //            关于这种图片特别多的网站,所有的图片都是延迟加载的! 懒加载
    //            source-data-lazy-img
    //            String img = el.getElementsByTag("img").eq(0).attr("src");
                String img = el.getElementsByTag("img").eq(0).attr("source-data-lazy-img");
                String price = el.getElementsByClass("p-price").eq(0).text();
                String title = el.getElementsByClass("p-name").eq(0).text();
                System.out.println(img);
                System.out.println(price);
                System.out.println(title);
                System.out.println("--------------------------------");
                Content content = new Content();
                content.setImg(img);
                content.setImg(price);
                content.setImg(title);
                goodsList.add(content);
            }
            return goodsList;
        }
    }
    
    
  • 相关阅读:
    迭代器在LinkedList上的删除
    java多线程:CopyOnWriteArrayList
    vs中代码编译通过,但还是有红色波浪线
    vs中项目属性配置
    TortoiseGit安装与配置
    DC(device context)
    weak_ptr 使用
    C++ 中shared_ptr循环引用计数问题
    for_each与lambda表达式联合使用
    new 和 make_shared 在内存上的区别
  • 原文地址:https://www.cnblogs.com/ls-summer/p/15025658.html
Copyright © 2011-2022 走看看