java 怎样分页存储数据到mysql数据库?
根据我的理解你的程序的主要作用是:
抓取另外一个网站的页面内容
解析后存储到自己的数据库里面
然后再在页面上显示刚刚抓取的数据
如果我的理解正确的话,你要做的是一个网站数据采集器,那么
分页存储的方法有两种:
方案A
在数据库找个表存储当前进行到的序号,比如现在网站上有1000个数据,有个字段可以标定数据的序号,就是网站文章的id(这个数据根据业务的不同要自己去寻找)
然后你读取对方网站的时候先把网站的html读取到java内存中,然后解析这些html,读出一个list列表
在对list列表遍历的时候,把文章的id跟数据库中存储的文章id比对,如果发现是已经存储过的文章id就不存储,如果是没存储过的再存储
在遍历的过程中记录下当前存储的文章数量,当达到一个指定的数量(你可以自己定义,比如是100个文章)的时候停止存储,并退出循环,然后把当前遍历到的文章id存储到数据库中
这样就实现了每次只存储指定的数量(比如100个文章)
方案B
如果你要抓取的网站也是分页的,那么你就每次抓取一页,并把当前抓取到的页数记录到数据库中
通过观察得出对方网站的不同页数据的url规律,比如发现他们网站第x页的数据总是根据 域名/具体的页面?page=x ,那么下次抓取的时候,从数据库读出上次抓取的页面数,然后加1
拼出新的页面的url,然后访问,再进行抓取
这样就实现了每次只存储一页数据
分页显示的方法:
使用mysql的 limit 语法:limit x,y ,代表从第x行开始读取 y 行数据
假定当前要翻到第page页,每页有row行数据,sql要这么写
select * from user limit ((page-1)*row),row
举个例子一页20条,第3页的写法
select * from user limit 40,20
这个我是知道的,但是因为数据太多,一次存储需要花费的时间就太长了,会一直停留在存储页面
广告 您可能关注的内容 |