爬虫,爬取美团店铺信息

今日任务

爬取美团一个页面的店铺信息并存到mysql数据库的表中。
url:https://sh.meituan.com/ptapi/recommends?limit=10

爬虫,爬取美团店铺信息_第1张图片

此处用的是json,将此处代码复制下来研究,可以放到网上的json在线视图编辑器上进行研究如图

爬虫,爬取美团店铺信息_第2张图片

通过分析图片可以得到这个代码的结构最外层的是一个【】包裹的json数组,点开可以看到有{}包裹的十个json对象。

  • 首先将json通过url提取出来
URL url = new URL("https://sh.meituan.com/ptapi/recommends?limit=10");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-Agent", "Mozilla/5.0 (iPad; CPU OS 11_0 like Mac OS X) AppleWebKit/604.1.34 " +
                    "(KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1");
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(connection.getInputStream()));
            String urlString = "";
            String current;
            while ((current = in.readLine()) != null) {
                urlString+= current;
            }
  • 然后将对其中的JsonArray数组操作
JSONArray json = JSONArray.fromObject(urlString);//大括号object 中括号array
  • 通过for循环提取数组中的十个对象并对其中的键值对操作,通过key获得value并存储到数组中,这个json视情况有多少个对象就循环多少次每次都要创建一个新数组并提取
    然后对数据库进行操作
    在for循环之前建立对数据库的连接

数据库连接类:

public static Connection getConn() {
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/dianpu?serverTimezone=UTC&characterEncoding=utf-8&useUnicode=true&useSSL=false";
        String username = "root";
        String password = "367494";
        Connection conn = null;
        try {
            Class.forName(driver); //
            conn =DriverManager.getConnection(url, username, password);

            System.out.println("数据库连接成功");

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }

连接数据库后在循环中多次操作,将需要的数据依次插入的数据库的表中,这里我选了八个值。通过mysql的插入操作

爬虫,爬取美团店铺信息_第3张图片

        Connection con = Conn.getConn();
        Statement sta = con.createStatement();
for (int i = 0; i < json.size(); i++) {
                String[] m = new String[json.size()];
                JSONObject jsonObject = json.getJSONObject(i);
                System.out.println(jsonObject);
                m[0] = jsonObject.getString("itemId");
                m[1] = jsonObject.getString("title");
                m[2] = jsonObject.getString("imgUrl");
                m[3] = jsonObject.getString("score");
                m[4] = jsonObject.getString("areaName");
                m[5] = jsonObject.getString("lowPrice");
                m[6] = jsonObject.getString("avgPrice");
                m[7] = jsonObject.getString("commentNum");
                String sql = "insert into dianpu values(" +
                        m[0] +
                        ",'" +
                        m[1] +
                        "','" +
                        m[2] +
                        "'," +
                        m[3] +
                        ",'" +
                        m[4] +
                        "'," +
                        m[5] +
                        "," +
                        m[6] +
                        "," +
                        m[7] +
                        ")";
                sta.execute(sql);
            }

运行之后查看数据库:
爬虫,爬取美团店铺信息_第4张图片

你可能感兴趣的:(爬虫)