java爬取网页的数据并存入数据库
这里使用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爬取网页的数据并存入数据库相关推荐
- 用Scrapy爬虫框架爬取食品论坛数据并存入数据库
这篇文章主要给大家介绍了食品网站的数据采集和存储过程,详解了如何分析网页结构.爬虫策略.网站类型.层级关系.爬虫方法和数据存储过程,最终实现将帖子的每条评论爬取到数据库中,并且做到可以更新数据,防止重 ...
- Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索
Jsoup:用Java也可以爬虫,怎么使用Java进行爬虫,用Java爬取网页数据,使用Jsoup爬取数据,爬虫举例:京东搜索 一.资源 为什么接下来的代码中要使用el.getElementsByTa ...
- 【用Java爬取网页图片——爬虫爬取数据】
用Java爬取网页图片--爬虫爬取数据 1.在创建项目中导入jsoup 2.创建一个保存下载图片的路径 3.使用URL读取网页路径,jsoup读取网页内容 4.利用属性标签获取图片连接块 5.因为该路 ...
- Java爬取豆瓣电影数据
所用到的技术有Jsoup,HttpClient. Jsoup jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CS ...
- python爬取网页代码-python爬虫爬取网页所有数据详细教程
Python爬虫可通过查找一个或多个域的所有 URL 从 Web 收集数据.Python 有几个流行的网络爬虫库和框架.大家熟知的就是python爬取网页数据,对于没有编程技术的普通人来说,怎么才能快 ...
- python爬虫表格table_Python基于pandas爬取网页表格数据
以网页表格为例:https://www.kuaidaili.com/free/ 该网站数据存在table标签,直接用requests,需要结合bs4解析正则/xpath/lxml等,没有几行代码是搞不 ...
- python 爬虫 表格,python爬虫爬取网页表格数据
用python爬取网页表格数据,供大家参考,具体内容如下 from bs4 import BeautifulSoup import requests import csv import bs4 #检查 ...
- Java 爬取网页图片并下载
Java 爬取网页图片并下载 源码; package a; import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup. ...
- python pd.read_html 快速爬取网页表格数据与常规请求解析方式对比
为爬取网页表格数据,较容想到的常规方式是通过requests请求以及lxml解析定位获取元素,此外还可以通过pandas库的read_html直接获取表格数据,得到的将是目标网页所有table表格的l ...
最新文章
- Android模拟器SD卡的使用
- IDEA 小技巧之书签与收藏
- centos 安装 svn
- delegate委托
- QMQ顺序消息设计与实现
- zookeeper的名词复盘-Watcher
- 五年级计算机学情分析,信息技术教学计划之学情分析
- 什么是SAP OData Model Creator
- LeetCode 2202. K 次操作后最大化顶端元素
- Java HashMap与Hashtable数据结构和特点+HashSet简述
- SylixOS磁盘高速传输
- 前端怎么画三角形_WEB前端-CSS三角形绘制方法
- dll注入的一种方式
- 区块链“国家队”上新,天津重磅发布自主可控区块链系统“海河智链”
- verlet-rope-latest 的扩展—— BYRope
- 【读书笔记】推荐系统实践-常见推荐算法及应用
- OpenCL编程入门(一)
- Badboy安装教程(含下载地址)
- 安装Office2016卸载WPS后office图标异常解决办法
- 金属非金属如何去毛刺 机器人浮动去毛刺
热门文章
- win10安装MinGW-W64的一点心得
- 【Android Jetpack】Navigation——条件导航
- 写一个我的世界的代码
- 最精辟的句子语录,句句经典入心,获赞无数!
- 小学音乐教学和计算机的融合,【信息技术与小学语文教学的有效融合】_浅谈小学语文教学与信息技术的融合...
- linux运维工程师培训课程_Linux系统资深运维工程师的进阶秘籍
- “12306”的架构到底有多强大?
- 解决IDEA插件安装慢、超时、不成功的方法
- between and写法
- postgresql 数组函数全集