这里使用Jsoup来实现改功能。
demo用到的技术为springboot+jsoup+mysql+mybatis plus

1.首先导入jsoup依赖

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency>

2.新建实体类(存放网页的数据,字段属性根据需求来定)

/*** @author  Mr. Dong* @create  2021/9/2 15:56* @desc    Jsoup爬取网页数据**/
@Data
@TableName("menu")
public class Menu extends Model<Menu> {@TableId(value = "id")private String id;@TableField("title")private String title;@TableField("img")private String img;@TableField("des")private String describe;@TableField("main_material")private String mainMaterial;@TableField("step")private String step;@TableField("finished_product")private String finishedProduct;@TableField("skill")private String skill;
}

3.接口

import com.dongbing.demo.modules.system.entity.Menu;
import com.dongbing.demo.modules.system.mapper.MenuMapper;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.net.URL;
import java.util.*;
/*** @author  Mr. Dong* @create  2021/9/2 15:56* @desc    jsoup爬取网页数据**/
@RestController
public class Test {@Autowiredprivate MenuMapper menuMapper;public static Menu menu = new Menu();@RequestMapping("/getData")public List<Map<String,String>> getData() throws Exception {//爬取的网页String url = "https://so.meishi.cc/?q=%E9%B1%BC%E9%A6%99%E8%82%89%E4%B8%9D&kw=168&sort=time&page=1";//document相当于是个js直接操作js一样必须要联网 这一步就是获取当前网页的所有元素,接下来的操作和js差不多了Document document = Jsoup.parse(new URL(url), 3000000);Elements element = document.getElementsByClass("search2015_cpitem");List<Map<String,String>> list = new ArrayList<>();for (Element element1 : element) {String title = element1.getElementsByClass("img").attr("title");//懒加载的方式  所以调用data-lazy-img这个属性,而不是 srcString image = element1.getElementsByTag("img").attr("src");String msgUrl = element1.getElementsByTag("a").attr("href");//循环获取a标签中的链接Document documentTwo = Jsoup.parse(new URL(msgUrl), 996000000);Elements elementTwo = documentTwo.getElementsByClass("info2");Elements elementThree = documentTwo.getElementsByClass("recipe_ingredientsw");Elements elementFour = documentTwo.getElementsByClass("recipe_step_num");Elements elementFive = documentTwo.getElementsByClass("step_content");Elements elementSix = documentTwo.getElementsByClass("recipe_finish_box");Elements elementSeven = documentTwo.getElementsByClass("recipe_tips_words");String describe = "";String mainMaterial = "";String step = "";String stepUrl = "";String finishedProduct = "";String skill = "";for (Element element2: elementTwo){describe = element2.getElementsByTag("em").text()+";"+element2.getElementsByTag("strong").text();}for (Element element3: elementThree){mainMaterial = element3.getElementsByTag("strong").text()+element3.getElementsByTag("a").text();}List<String> listOne = new ArrayList<>();List<String> listTwo = new ArrayList<>();for (Element element4: elementFour){step = element4.getElementsByTag("strong").text()+element4.getElementsByTag("p").text();listOne.add(step);}for (Element element5: elementFive){stepUrl = element5.getElementsByTag("p").text()+";图片地址"+element5.getElementsByTag("img").attr("src");listTwo.add(stepUrl);}for (Element element6:elementSix){finishedProduct = element6.getElementsByTag("img").attr("title")+":"+element6.getElementsByTag("img").attr("src")+";";}for (Element element7: elementSeven){skill = element7.getElementsByTag("p").text();}menu.setId(UUID.randomUUID().toString().replace("-",""));menu.setTitle(title);menu.setImg(image);menu.setDescribe(describe);menu.setMainMaterial(mainMaterial);menu.setStep(listOne.toString()+listTwo.toString());menu.setFinishedProduct(finishedProduct);menu.setSkill("烹饪技巧: "+skill);menuMapper.insert(menu);}Map<String,String> map = new HashMap<>();map.put("Jsoup","获取网页数据呀~");list.add(map);return list;}}

4.数据库


demo码云链接https://gitee.com/dongbingya/springboot/tree/master/Jsoup

java爬取网页的数据并存入数据库相关推荐

  1. 用Scrapy爬虫框架爬取食品论坛数据并存入数据库

    这篇文章主要给大家介绍了食品网站的数据采集和存储过程,详解了如何分析网页结构.爬虫策略.网站类型.层级关系.爬虫方法和数据存储过程,最终实现将帖子的每条评论爬取到数据库中,并且做到可以更新数据,防止重 ...

  2. Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索

    Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...

  3. 【用Java爬取网页图片——爬虫爬取数据】

    用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...

  4. Java爬取豆瓣电影数据

    所用到的技术有Jsoup,HttpClient. Jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CS ...

  5. python爬取网页代码-python爬虫爬取网页所有数据详细教程

    Python爬虫可通过查找一个或多个域的所有 URL 从 Web 收集数据.Python 有几个流行的网络爬虫库和框架.大家熟知的就是python爬取网页数据,对于没有编程技术的普通人来说,怎么才能快 ...

  6. python爬虫表格table_Python基于pandas爬取网页表格数据

    以网页表格为例:https://www.kuaidaili.com/free/ 该网站数据存在table标签,直接用requests,需要结合bs4解析正则/xpath/lxml等,没有几行代码是搞不 ...

  7. python 爬虫 表格,python爬虫爬取网页表格数据

    用python爬取网页表格数据,供大家参考,具体内容如下 from bs4 import BeautifulSoup import requests import csv import bs4 #检查 ...

  8. Java 爬取网页图片并下载

    Java 爬取网页图片并下载 源码; package a; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup. ...

  9. python pd.read_html 快速爬取网页表格数据与常规请求解析方式对比

    为爬取网页表格数据,较容想到的常规方式是通过requests请求以及lxml解析定位获取元素,此外还可以通过pandas库的read_html直接获取表格数据,得到的将是目标网页所有table表格的l ...

最新文章

  1. Android模拟器SD卡的使用
  2. IDEA 小技巧之书签与收藏
  3. centos 安装 svn
  4. delegate委托
  5. QMQ顺序消息设计与实现
  6. zookeeper的名词复盘-Watcher
  7. 五年级计算机学情分析,信息技术教学计划之学情分析
  8. 什么是SAP OData Model Creator
  9. LeetCode 2202. K 次操作后最大化顶端元素
  10. Java HashMap与Hashtable数据结构和特点+HashSet简述
  11. SylixOS磁盘高速传输
  12. 前端怎么画三角形_WEB前端-CSS三角形绘制方法
  13. dll注入的一种方式
  14. 区块链“国家队”上新,天津重磅发布自主可控区块链系统“海河智链”
  15. verlet-rope-latest 的扩展—— BYRope
  16. 【读书笔记】推荐系统实践-常见推荐算法及应用
  17. OpenCL编程入门(一)
  18. Badboy安装教程(含下载地址)
  19. 安装Office2016卸载WPS后office图标异常解决办法
  20. 金属非金属如何去毛刺 机器人浮动去毛刺

热门文章

  1. win10安装MinGW-W64的一点心得
  2. 【Android Jetpack】Navigation——条件导航
  3. 写一个我的世界的代码
  4. 最精辟的句子语录,句句经典入心,获赞无数!
  5. 小学音乐教学和计算机的融合,【信息技术与小学语文教学的有效融合】_浅谈小学语文教学与信息技术的融合...
  6. linux运维工程师培训课程_Linux系统资深运维工程师的进阶秘籍
  7. “12306”的架构到底有多强大?
  8. 解决IDEA插件安装慢、超时、不成功的方法
  9. between and写法
  10. postgresql 数组函数全集