欢迎光临!欢迎分享转载本站文章,尊重原创,转载请注明出处!

将博客文章自动收录到搜索引擎

2016年7月13日 没有评论

文章被搜索引擎收录是增加网站流量的一个重要途径,如何才能提升收录量呢?

其实,百度和360等主流搜索引擎为站长们提供了“自动收录”功能,只需要增加一段代码,文章即可在浏览时被自动收录到搜索引擎。很方便。

  • 登录百度和360站长平台,添加要收录的网站。
  • 百度

站长需要在每个页面的HTML代码中包含以下自动推送JS代码:

<script>
(function(){
var bp = document.createElement(‘script’);
var curProtocol = window.location.protocol.split(‘:’)[0];
if (curProtocol === ‘https’){
bp.src = “https://zz.bdstatic.com/linksubmit/push.js';
}
else{
bp.src = ‘http://push.zhanzhang.baidu.com/push.js';
}
var s = document.getElementsByTagName(“script”)[0];
s.parentNode.insertBefore(bp, s);
})();
</script>

如果站长使用PHP语言开发的网站,可以按以下步骤操作:
1、创建名为“baidu_js_push.php”的文件,文件内容是上述自动推送JS代码;
2、在每个PHP模板页文件中的 <body> 标记后面添加一行代码:
<?php include_once(“baidu_js_push.php”) ?>

  • 360

请将如下js代码安装到要提交的页面</body>前:

<script>
(function(){
var src = (document.location.protocol == “http:”) ? “http://js.passport.qihucdn.com/11.0.1.js?255286f2da4022ae8c37b8798c879160″:”https://jspassport.ssl.qhimg.com/11.0.1.js?255286f2da4022ae8c37b8798c879160″;
document.write(‘<script src=”‘ + src + ‘” id=”sozz”><\/script>’);
})();
</script>

分类: 开发 标签:

一个简单的cnzz数据采集与监控方案

2016年6月8日 1 条评论
  1. 场景
    • 有多个网站需要监控
    • 每个网站的cnzz数据只能分别通过密码来查看
  2. 方案
    • 使用casperjs定时批量抓取每个网站的cnzz数据截图,对于监控来说,一般只抓取概要图和趋势图就行了
    • 将抓取的数据按日期保存在web服务器的html目录里,命名方式为cnzz/DATE/SiteID_overview.png和cnzz/DATE/SiteID_trends.png
    • 写个简单的php页面,通过SiteID枚举出当前日期下的各网站的概要图和趋势图
  3. 实现方法
分类: js, 监控 标签: , ,

使用casperjs进行网页截图

2016年6月7日 没有评论

casperjs有个很实用的功能就是网页截图,通过几个capture函数就能很方便的实现截图功能。

简单代码如下:

var casper = require(“casper”).create();
var x = require(‘casper’).selectXPath;  //用来简化XPath操作

casper.start(‘http://new.cnzz.com/v1/login.php?siteid=123454321′, function(){
this.fill(‘form[name=”form1″]’, {
‘password': 123456
}, true);
});

casper.then(function(){
//this.capture(‘cnzz.png’); //截取整个页面
this.captureSelector(‘cnzz.png’, x(‘//*[@id=”overview_top_order_table”]’)); //截取指定的selector
});

casper.run();

需要注意的是,如果网页内包含中文,服务器上需要安装中文字符集包。CentOS上通过以下命令来安装:

yum install bitmap-fonts bitmap-fonts-cjk

分类: js 标签: ,

casperjs批量执行多个url

2016年6月3日 没有评论

使用each api可以批量访问多个url。例子:

var casper = require(“casper”).create();

var links = [
“http://baidu.com/”,
“http://qq.com/”,
“http://bing.com/”
];

casper.start();

casper.each(links, function(self, link) {
this.thenOpen(link, function() {
this.echo(this.getTitle() + ” – ” + link);
});
});

casper.run();

分类: js 标签:

一大波常用小工具袭来

2016年6月2日 没有评论

今天发现一个比较实用的网站:tool.lu,集合了很多日常使用到的工具,比如:在线运行小段代码、正则表达式、favicon生成、字符串加解密、ip查询等。

这么多工具集合起来,很方便,站长很有创意。

收藏备用。

分类: 工具 标签:

使用casperjs爬取cnzz统计数据

2016年5月26日 没有评论

通过cnzz统计数据来监测网站的运行是运营和运维的一个重要手段,当站点比较多时,自动获取站点的统计数据能够极大的提高工作效率。

然而cnzz没有提供查询接口,需要我们自己手动编写代码来爬取数据。通过抓包可以发现需要很多步骤才能拿到数据,并且每次请求都携带了一些cookies等验证信息。如果一步步来实现的话非常麻烦,实际上我用Snoopy尝试进行抓取并不成功,总是跳转回登录url。

同事提供了一种方法:使用phantomjs模拟登录,试了一下,还真是方便很多。

这里提供了使用casperjs(封装了phantomjs)来进行抓取的实现代码,仅供参考。

var casper = require("casper").create()
casper.start('http://new.cnzz.com/v1/login.php?siteid=12345654321', function(){
    this.fill('form[name="form1"]', {
    'password': 1234560
}, true);   //true, 填充完毕后,立刻提交表单
});
casper.then(function(){
    var today=this.evaluate(function(){
        var tbl=document.getElementById("overview_top_order_table");
        return {
            pv:tbl.rows[1].cells[1].innerHTML,
            uv:tbl.rows[1].cells[2].innerHTML,
            ip:tbl.rows[1].cells[3].innerHTML,
        };
    });
    this.echo(today.pv);
    this.echo(today.uv);
    this.echo(today.ip);
});
casper.run();

js函数通过返回一个对象实现返回多个值

2016年5月26日 没有评论

直接简单粗暴的上代码,已亲测。

<!DOCTYPE html>
<html>
<body>

<p>本例调用的函数会执行一个计算,然后返回结果:</p>

<p id=”he”></p>
<p id=”ji”></p>

<script>
function myFunction(a,b)
{
return {he:a+b, ji:a*b};
}

document.getElementById(“he”).innerHTML=myFunction(4,3).he;
document.getElementById(“ji”).innerHTML=myFunction(4,3).ji;
</script>

</body>
</html>

分类: js 标签:

实用小工具推荐2:正则表达式测试器

2016年5月10日 没有评论

今天为大家推荐的是一个正则表达式测试器:RegexTester。名为测试器,但它实际上提供了正则查找、替换、结果导出等功能,非常适合于日常开发和测试工作。

首先说一下为什么要用到这个工具。有时候我们需要做一些文本处理工作,比如日志,要从文本中提取相关信息。通常情况下,这些信息是有规律的,比如:每行为一条记录,每条记录包含相同个数和意义的字段。这种有规律的文本是很容易处理的,可以用shell中的awk来处理。但有时候就没那么规律,比如下边这2行(实际中会有成千上万行)数据,我希望从中提取uri和sz参数的值,不太容易用awk进行分割处理。

http://pos.baidu.com/acbm?rdid=2494569&dc=2&di=u2494569&dri=0&dis=0&dai=2&ps=9801×0&coa=tn%3Dtemplate_inlay_all_mobile%26adn%3D1%26originUrl%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617_2.html%26pl%3D4%26id%3Du2494569&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1458484701051&ti=%E9%87%8D%E7%94%9F%E4%B9%8B%E5%A7%94%E8%BA%AB%20%E4%BD%9C%E8%80%85%EF%BC%9A%E4%B8%8A%E4%B9%99(2)_bl%E6%96%87%E5%BA%93&ari=1&dbv=0&drs=3&pcs=360×487&pss=360×9938&cfv=0&cpl=0&chi=12&cce=true&cec=UTF-8&tlm=1458455901&ltu=http%3A%2F%2Fm.blwen.com%2F%3Fhost%3Dwww.blwen.com%26src%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617_2.html&ltr=http%3A%2F%2Fm.blwen.com%2F%3Fhost%3Dwww.blwen.com%26src%3Dhttp%253A%252F%252Fwww.blwen.com%252Fchuanyuechongsheng%252F2015%252F0428%252F7617.html&ecd=1&psr=1081×1794&par=1080×1794&pis=-1x-1&ccd=32&cja=false&cmi=0&col=zh-CN&cdo=0&tcn=1458484702&sz=324×270&qn=45b2c0ccd2d70f2d&tt=1458484700976.95.429.535,

http://pos.baidu.com/acgm?sz=320×48&rdid=2521903&dc=2&exps=112101&di=u2521903&dri=0&dis=3&dai=1&ps=0x0&dcb=BAIDU_SSP_define&dtm=BAIDU_DUP_SETJSONADSLOT&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1458483692530&ari=1&dbv=0&drs=1&pcs=360×54&pss=360×54&cfv=0&cpl=0&chi=1&cce=true&cec=GBK&tlm=1455584508&ltu=http%3A%2F%2Fm.fun.tv%2Fvplay%2F%3Fvid%3D8041968%26malliance%3D2242&liu=http%3A%2F%2Fadm.funshion.com%2Fmat%2F20160216170148-12656951.html&ltr=http%3A%2F%2Fm.fun.tv%2Fvplay%2F%3Fvid%3D8041968%26malliance%3D2242&ecd=1&psr=721×1280&par=720×1280&pis=360×54&ccd=32&cja=false&cmi=0&col=zh-CN&cdo=0&tcn=1458483693&qn=3fe86ec3e856eb67&tt=1458483692449.94.1233.1236,

但实际上这样的数据还是有一定规律的,用下边的正则就可以方便的把想要的字段提取出来。

http://pos.baidu.com/(.*?)\?(.*?)sz=(.*?)&(.*)

打开测试器,将正则表达式和文本填入对应的框内,工具条上选择“多行模式”,再点击“运行”,结果就出来了。结果框内点右键就可以导出csv文件,再用awk处理就方便多了。

正则表达式测试器

日常工作中免不了写几个正则表达式,用这个小工具测测表达式的准确性,可以节省不少时间。

另外,官网还提供了正则表达式的教程,可以去看看。

 

分类: 工具 标签: , ,

实用小工具推荐1:排版助手

2016年4月23日 没有评论

  复制粘贴是日常中使用很频繁的操作,有时候复制过来的大段文字排版较乱,不符合要求,手动一段一段排很麻烦。今天给大家介绍一个免费的排版小工具:排版助手

  使用很简单。将要排版的文字复制到窗口里边,右键选择“开始排版”,就排好了。

排版助手

也可以在排版前根据需要勾选界面上的一些排版项:段首缩进、合并换行、修正干扰符、删除非段落换行等。同时可以勾选下边的“复制即排版”和“排版后拷贝”选项,把待排版的文字复制到窗口中,立即就排好,并可以马上拿去粘贴了。非常方便!

  当然要感谢原作者的智慧付出了,有需要的朋友去这里下载使用吧!

分类: 工具 标签:

pytesseract:Python图像验证码识别库的简单使用

2016年4月19日 没有评论

Python-tesseract是Python的一个OCR工具,对Google的Tesseract-OCR进行了封装,从测试效果来看能够识别简单的图像验证码。简单到什么程度呢?比如下边这个验证码生成链接:

http://www.bjrbj.gov.cn/csibiz/indinfo/validationCodeServlet.do

四个数字加上磨砂背景。话说回来,这样已经不错了,因为现在的验证码越来越变态了!

  • 安装
    • Python版本要求2.6以后或者3
    • 需要安装 Python Imaging Library (PIL),貌似这个Python已默认安装了
    • google tesseract-ocr,这个可以通过yum install tesseract来安装。安装完成后确保可以在shell中直接输入tesseract命令。
    • pip install pytesseract
  • 使用
    • wget上边的链接得到验证码图片,重命名为test.png。注意验证码的格式,不一定是png。
    • 识别代码:

      #/usr/bin/python

      import pytesseract
      from PIL import Image

      image = Image.open(‘test.png’)
      vcode = pytesseract.image_to_string(image)
      print vcode

      执行上边的代码就能得到数字验证码。

    • 遇到的情况。运行上边的脚本会报错:

      Traceback (most recent call last):
      File “<stdin>”, line 1, in <module>
      File “/usr/lib/python2.6/site-packages/pytesseract/pytesseract.py”, line 143, in image_to_string
      if len(image.split()) == 4:
      File “/usr/lib64/python2.6/site-packages/PIL/Image.py”, line 1497, in split
      self.load()
      AttributeError: ‘NoneType’ object has no attribute ‘bands’

    • 经查,是PIL的一个bug,将Image.py1500行左右的split函数修改如下就行了。

      def split(self):
      “Split image into bands”
      self.load()
      if self.im.bands == 1:
      ims = [self.copy()]
      else:
      ims = []
      #self.load()
      for i in range(self.im.bands):
      ims.append(self._new(self.im.getband(i)))
      return tuple(ims)

当然对于复杂的验证码,还得需要专业的图像识别技术来处理。

分类: 开发 标签: ,