最近在新浪SAE上用worldpress搭建了一个简单的 个人博客,由于前端设计经验不足,css+div方面直接使用现有的inove主题。

但是自己想做一些个性化的设置,当然添加小工具之类的定制已经不能满足我的需求了。我已经添加了像3D标签云插件,百度地图的js API,以及音乐播放的插件,还有些前端代码添加都比较简单,在【外观->小工具】里面添加【文本】就可以了。本来想把首页的模板给换了,不知道为什么在SAE上鼓捣了一番没有成功。

于是有想添加一些其他的信息,比如自己读过的书籍。考虑到学校图书馆网站本身资源的丰富性,以及个人借阅的信息都保存在数据库中,心想可以借来一用。当然,最近和同学也有做一个书籍相关的网站的想法,于是趁此机会可以先一试。

首先svn将worldpress代码导出到本地(可以参考SAE开发文档)。
要利用图书馆数据,得先进行网页抓取,由于worldpress后台就是php写的,正好可以添加一些php代码实现此功能。
php进行网页抓取很简单,只需使用curl就行了。
这里是进行登陆后页面的抓取,因为要抓取的是我借阅过的书籍。所有要设置cookie,抓取到html内容之后,可以使用simple_html_dom获取节点内容,或者使用preg_match_all函数进行正则表达式匹配。
最后讲抓取的数据组合成自己想要的Html格式进行输出。

抓取到信息之后,要做的就是怎么放到worldpress里了。

这里参考了以下文章:

=============================================================================================================

地址: http://y234.cn/?p=4701
在WordPress上执行php代码
  本来在做极光监测页面的时候就需要执行php代码,但最后还是给我用最土鳖的办法绕过去了(在别的地方cron一个php,定时生成几个gif图像,然后引用之)。结果今天折腾实验室的降雨预报页面的时候,总算绕不过去了。本来想着说这应该是个小意思,我装个exec-php不就可以了嘛。结果exec-php竟然还要折腾配套的各种东西,搞到最后竟然还不能用,真是郁闷。于是只好查查看有没有替代的方法。幸好万能的Wordpress还是可以用不太麻烦的方法解决这一难题的,这一方法就是shortcode,适用于规模不大的php程序。

简单地说就是把你的php程序植入到主题里面,然后在文章里用形如[my-shortcode type="dog"]的形式调用之。
  首先修改一下主题里的function.php,在末尾添加这一行:

include_once(“shortcode.php”);

  我们所有的代码就放在shortcode.php里面。当然你想全写在function.php里也没问题。

  要把一个php程序写到shortcode里很容易,只要把它弄成一个函数(如果它还不是函数的话),然后注册这个函数即可。比如下面的shortcode.php

function my-shortcode-function($atts){extract(shortcode_atts(array('type' => 'cat'),$atts)); // 设定参数type的默认值为catif ($atts['type']=='cat') echo "Miao";elseif ($atts['type']=='dog') echo "Wang"; // 函数其他部分return;
}
add_shortcode('my-shortcode', 'my-shortcode-function'); // 注册my-shortcode-function到my-shortcode

  于是一个shortcode就做好了。如果我想让它返回Wang,只需要在写文章的时候用[my-shortcode type="dog"]
就可以了。

=============================================================================================================

我新建了一个Bookshelf的页面,打开就会自动抓取进行,由于图书馆那边的原因,抓取耗时较长,估计得几秒左右。
效果如下,其中图片是抓包分析到图书馆js代码调用一个url接口,返回json数据中提取到的,代码直接在Inove主题中修改:

抓取网页代码如下:

//登陆页面
$login_url = 'http://opac.lib.xidian.edu.cn/patroninfo/';
//用户名和密码
$post_fields = 'code=【用户名】pin=【密码】&pat_submit=xxx';
//cookie文件存放在网站根目录的temp文件夹下
$cookie_file = tempnam('./temp','cookie');
//登陆并获取cookie
$ch = curl_init($login_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);
curl_exec($ch);
curl_close($ch);
//访问借书的页面
$send_url='http://opac.lib.xidian.edu.cn/patroninfo~S0*chx/1075191/items';
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);
echo "<strong><font color=\"#ff0000\">注:以下书籍信息由DC的代码为您自动抓取--来源:西安电子科技大学 图书 馆 --请稍候......</font></strong><br />";echo "<font color=\"#00c000\">------------------------------------------------Reading-----------------------------------------------------</font></strong></br>";
include_once('simple_html_dom.php');
$html= str_get_html($contents);
$books=$html->find('label');
$dates= $html->find('.patFuncStatus');
preg_match_all("/\/record=b\d+~S0\*chx/",$contents,$arr);
//echo $arr[0][0];
for($i=0;$i<count($books);$i++)
{//echo $books[$i]->plaintext."【".$dates[$i]->plaintext.'】<br>' ;echo "<a href='http://opac.lib.xidian.edu.cn".$arr[0][$i]."'>"."◆".$books[$i]->plaintext."</a>";$send_url="http://opac.lib.xidian.edu.cn".$arr[0][$i];//echo $send_url;$ch = curl_init($send_url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);$contents = curl_exec($ch);curl_close($ch);$html= str_get_html($contents);//echo $html;preg_match_all("/\d{3}\-\d\-.*\-\d/",$html,$isbn);//var_dump($isbn[0][0]);$send_url="http://data.libtop.com/xopac/search?callback=jsonp1347852533232&isbn=".$isbn[0][0]."&library=244&media=0";$ch = curl_init($send_url);curl_setopt($ch, CURLOPT_HEADER, 0);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$contents = curl_exec($ch);curl_close($ch);preg_match_all("/http.*jpg/",$contents,$img);echo "<img src=\"".$img[0][0]."\"/>";echo "<a href='http://data.libtop.com/xopac/search?callback=jsonp1347852533232&isbn=".$isbn[0][0]."&library=244&media=0'>"."【获取本书信息:格式JSON】"."</a>"."</br>";
}
$html->clear();echo "<font color=\"#00c000\">------------------------------------------------Have Read-----------------------------------------------------</font></strong></br>";
$send_url='http://opac.lib.xidian.edu.cn/patroninfo~S0*chx/1075191/readinghistory';
$ch = curl_init($send_url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);
$contents = curl_exec($ch);
curl_close($ch);$html= str_get_html($contents);
$books=$html->find('.patFuncTitle');
$dates= $html->find('.patFuncDate');
for($i=0;$i<count($books);$i++)
{echo "◆".$books[$i]->plaintext."【".$dates[$i]->plaintext.'】<br>' ;
}
$html->clear();
return;
}

在worldpress中使用php代码抓取图书馆书籍信息相关推荐

  1. Python爬虫实战---抓取图书馆借阅信息

    Python爬虫实战---抓取图书馆借阅信息 原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约 ...

  2. php 采集邮箱,采集邮箱的php代码(抓取网页中的邮箱地址)

    采集邮箱的php代码(抓取网页中的邮箱地址) 复制代码 代码如下: $url='http://www.jb51.net'; //这个网页里绝对含有邮件地址. $content=file_get_con ...

  3. python简单爬虫代码-python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息...

    原标题:python爬虫超简单攻略,带你写入门级的爬虫,抓取上万条信息 最近经常有人问我,明明看着教程写个爬虫很简单,但是自己上手的时候就麻爪了...那么今天就给刚开始学习爬虫的同学,分享一下怎么一步 ...

  4. Python爬虫之XPath基础教程:用代码抓取网页数据

    Python爬虫之XPath基础教程:用代码抓取网页数据 在网络时代,网页数据是获取信息和进行分析的最重要的来源之一.Python的爬虫技术让我们可以轻松抓取网页数据,并进行数据处理.XPath是一种 ...

  5. RPA(影刀)无需写代码抓取某东的商品信息

    大家好,我是翔宇! 有的小伙伴不会写代码,但也想采集一些数据,RPA就是一个最好的选择.今天我就带大家用RPA(影刀)无需写代码抓取某东的商品信息,主要采集到的数据有以下字段,数据达到近5000条. ...

  6. 国家统计局统计用区划代码抓取记

    本来只是考虑在程序中建一个省地县的树状选取构件,想从网上找一个地名库,结果不是要积分就是要会员.看到网上有介绍利用国家统计局统计用区划代码抓取的,心想自己也可以抓取试试,结果在这个歧路上越走越远,用了 ...

  7. 把jquery city-picker地区选择插件数据改成微信小程序省市地区数据一样(php代码抓取微信小程序地区数据)

    原版插件 https://github.com/tshi0912/city-picker 资源下载 https://download.csdn.net/download/jianye112/12036 ...

  8. 从人人网抓取高校数据信息,包括,省份 - 高校 - 院系 (提供最终SQL文件下载)...

    从人人网抓取高校数据信息,包括,省份 - 高校 - 院系 Author: handt Blog    : www.cnblogs.com/handt 涉及到的脚本和 SQL 文件 点此下载 ===== ...

  9. python获取app信息的库_基于python3抓取pinpoint应用信息入库

    这篇文章主要介绍了基于python3抓取pinpoint应用信息入库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Pinpoint是用Java编写 ...

  10. node抓取58同城信息_如何使用标准库和Node.js轻松抓取网站以获取信息

    node抓取58同城信息 网络抓取工具是一种工具,可让我们选择网站的非结构化数据并将其转换为结构化数据库. 那么,网络刮板将在哪里派上用场呢? 我列出了我最喜欢的用例,以使您对启动自己的应用感到兴奋! ...

最新文章

  1. php sequelize,node,express_sequelize 联合查询,node,express,mysql,sequelize - phpStudy
  2. ns3入门案例1 first.cc
  3. mongodb副本集搭建
  4. C#LeetCode刷题之#110-平衡二叉树(Balanced Binary Tree)
  5. 先导课程 单片机_单片机技术(北京航空航天大学)-壹课堂 - 公开课 | 精品课程 | 教学视频...
  6. GraphQL API 的查询语言
  7. autojs-识别验证码-联众打码
  8. 阿里P8详谈:软件开发和软件测试的职业寿命问题?
  9. Carson带你学Android:这是一份全面 详细的Android代码命名规范
  10. 对于开发软件的NABCD分析
  11. C语言编程练习:打印九九口诀表
  12. 社工的危害性(一)菜鸟经验_星语惜馨_新浪博客
  13. 150分钟学会R语言与R常见问题解答
  14. Pandas操作02
  15. 最近都在说移民火星,这些黑科技你了解吗?
  16. rsa public key not find
  17. asp.net(入门理解)
  18. 再论意识、行为和结果
  19. Rxjava入门与使用
  20. 微雪2.9寸墨水屏在普中Z100(stm32f103zet6)板上点亮

热门文章

  1. Elasticsearch-2-附面试题
  2. 黑苹果10.15.7使用
  3. ilo看服务器信息,使用iLO监视HP服务器硬件
  4. 最新出炉的SUN ISV eNews
  5. 测试用例---场景法和错误推测法
  6. 洛谷P3939填颜色
  7. 微信oauth2的认证
  8. 大咖说开源|郑振宇:通过开源手段巩固基础软件供应链
  9. 西游记中金箍棒的来历和巨大威力
  10. Android Studio通过模拟器联网