当前位置:   article > 正文

PHP+js动态获取数据并动态显示_php抓取js渲染过的数据

php抓取js渲染过的数据

 

最近为了收集一些数据,花了15元申请了1个接口网站的月度vip,本着不浪费的精神,把能用的接口都采了一遍,看到有的采集能动态显示才到的内容,于是sham也自己动手做了1个,实现的功能如下

 

  • 根据选择和条数设置,采集相应的接口和条数
  • 每采一条,会显示采集到的内容,然后动态在底部不停添加
  • 数据都会被存入数据库,而且是存完一条再存一条

 

首先是php部分,主要是用来从接口获取数据和存入数据库的

 

  1. <?php
  2. //公用数据库连接文件
  3. $servername = "localhost";
  4. $username = "数据库名";
  5. $password = "密码";
  6. $mysqlname = "数据库用户名";
  7. $con = mysqli_connect($servername, $username, $password, $mysqlname);
  8. mysqli_query($con,"set names utf8");
  9. $lists = [];
  10. $url = 'http://api.XXXXXX.com/?'.$_GET['getfor']; //这里设置api接口
  11. $data = file_get_contents ($url);//API接口
  12. $json = json_decode($data,true);//将json解析成数组
  13. if($_GET['getfor']=='caizimi'){
  14. $riddle=$json['newslist'][0]['riddle'];
  15. $answer=$json['newslist'][0]['answer'];
  16. $disturb=$json['newslist'][0]['disturb'];
  17. $description=$json['newslist'][0]['description'];
  18. $type=$json['newslist'][0]['type'];
  19. $sql1 = "SELECT count(id) FROM `dengmi` where `riddle`='$riddle'";
  20. $sql = "INSERT INTO `dengmi`(`riddle`, `answer`, `disturb`, `description`, `type`) VALUES ('$riddle','$answer','$disturb','$description','$type')";
  21. $msg = $riddle;
  22. }
  23. if($_GET['getfor']=='baiketiku'){
  24. $title=$json['newslist'][0]['title'];
  25. $answerA=$json['newslist'][0]['answerA'];
  26. $answerB=$json['newslist'][0]['answerB'];
  27. $answerC=$json['newslist'][0]['answerC'];
  28. $answerD=$json['newslist'][0]['answerD'];
  29. $answer=$json['newslist'][0]['answer'];
  30. $analytic=$json['newslist'][0]['analytic'];
  31. $sql1 = "SELECT count(id) FROM `bkxuanzeti` where `title`='$title'";
  32. $sql = "INSERT INTO `bkxuanzeti`(`title`, `answerA`, `answerB`, `answerC`, `answerD`, `answer`, `analytic`) VALUES ('$title','$answerA','$answerB','$answerC','$answerD','$answer','$analytic')";
  33. $msg = $title;
  34. }
  35. $result1 = $con->query($sql1);
  36. if($result1){
  37. while ($row1 = mysqli_fetch_array($result1) )
  38. {
  39. $rowCount = $row1[0];
  40. }
  41. }
  42. $msgs = array();
  43. if($rowCount==0){
  44. $res = $con -> query($sql);
  45. if($res){
  46. $msgs['content'] = '新增 ---- '.$msg;
  47. }else{
  48. $msgs['content'] = '!!!!!添加失败 ---- ';
  49. }
  50. }else{
  51. $msgs['content'] = '~~~~~这条已添加过了';
  52. }
  53. // sleep(1); 如需要减轻服务器压力,可设置等待1秒后再返回数据
  54. echo json_encode($msgs);
  55. ?>

 

然后js页,主要就是按需求来采集并显示结果

 

  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>采集</title>
  6. <script src="js/jquery.min.js"></script> <!--需要jquery支持-->
  7. <script type="text/javascript">
  8. //执行访问PHP页面来执行采集
  9. function action(){
  10. i++;
  11. //每次变量i+1,用于判断是否已经达到限定的条数
  12. $.get(url, function(data) {
  13. window.clearInterval(stopthis); //这里先暂停计时器,用于保证PHP页面有时间去执行相应操作
  14. console.log(data.content)
  15. //给需要显示的条目推加一条当前才到的内容
  16. content.push((i)+'. '+data.content+'<br/>');
  17. //判断当PHP页面有值返回,且没有超过设定条数时,继续执行计时器
  18. if(data.content!==null&&data.content!==''&&i<nums){
  19. jishiqi(); //继续执行计时器
  20. }
  21. $('#lists').html(content); //让list里面显示推加过的内容
  22. }, "json" );
  23. }
  24. //点击后执行
  25. function show(){
  26. nums = $('#nums').val(); //获取设定条数
  27. url = "cai.php?getfor="+$('#getfor').val(); //获取采集的内容,传给PHP页来采集相应内容
  28. i=0; //初始值
  29. content = new Array(); //初始化内容为空数组
  30. jishiqi()
  31. }
  32. //定时器事件,单独写出来是为了方面执行和停止
  33. function jishiqi(){
  34. stopthis = setInterval(action(),1000); //定时器,每秒循环执行,知道执行停止
  35. }
  36. </script>
  37. </head>
  38. <body>
  39. <select id='getfor'>
  40. <option value ="caizimi">灯谜</option>
  41. <option value ="baiketiku">百科题库</option>
  42. </select>
  43. <input id='nums' value="10"> <!--这个是设置每次采集的条数-->
  44. <input type="button" value="采集" onclick="show()">
  45. <div id="lists"></div> <!--这里会显示采集结果-->
  46. </body>
  47. </html>

 

这样,访问这个js设置页,直接点采集,就能按设置来采集数据并显示啦!

 

 

我是一个想做码农的行政文员

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/205282
推荐阅读
相关标签
  

闽ICP备14008679号