nodejs 访问网站并操作xpath
var xpath = require('xpath'); //引用xpath包
var dom = require('xmldom-silent').DOMParser;//引用xmldom包
var request=require('request');
var fs=require('fs');
var urlencode = require('urlencode');//引用url解码和编码包
var headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A403 Safari/8536.25' //设置手机useragent
};
request(
{
url:"https://www.google.co.jp/search?hl=ja&newwindow=1&site=&source=hp&q=hotel&oq=",
headers:headers
},function(error,response,body)
{
findXpath(body);
//fileWrite(body);
console.log("ok");
});
function findXpath(xml){
//var xml = "<book><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var XPATH_CITE = "//div[@id='mbEnd']//ol/li//cite/text()|//div[@id='tads']//ol/li//cite/text()|//div[@id='tadsb']//div[@class='ads-ad']//h3/text()";
var XPATH_H3 = "//div[@class='ads-ad']//h3//text()";
var XPATH_ADURL = "//div[@class='ads-ad']/h3/a/@href|//div[@id='tadsb']/ol/li/h3/a/@href";
var XPATH_INFO = "//div[@id='mbEnd']//ol/li//div[@class='ac ads-creative']//text()|//div[@id='taw']//ol/li//div[contains(@class,'ads-creative')]//text()|//div[@class='ads-ad']//div[@class='ads-creative']//text()";
var citeNodes = xpath.select(XPATH_CITE, doc);
var h3Nodes = xpath.select(XPATH_H3, doc);
var adInfoNodes = xpath.select(XPATH_INFO, doc);
var adUrlNodes = xpath.select(XPATH_ADURL, doc);
console.log("---------------------Node--------------Info-----------------------");
for(var i=0;i<citeNodes.length;i++)
{
var citeTxt = citeNodes[i].nodeValue;//循环获取节点
var h3Txt =h3Nodes[i].nodeValue;//循环获取节点
var adUrlTxt = adUrlNodes[i].nodeValue.match(/adurl=(http[\S]*$)/)[1].replace("adurl=","");//循环获取节点
var adInfoTxt =adInfoNodes[i].nodeValue;//循环获取节点
//var adUrl= UrlDecode(htmlDecode(adUrlTxt));
var adUrl=urlencode.decode(adUrlTxt);
console.log(citeTxt);
console.log(h3Txt);
console.log(adUrl);
console.log(adInfoTxt);
}
}
function fileWrite(body)
{
fs.writeFile('233.html', body, function (err) {
if (err) throw err;
console.log('Saved successfully'); //文件被保存
});
}
nodejs 访问网站并操作xpath的更多相关文章
- Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
http://www.cnblogs.com/zhongweiv/archive/2013/01/07/https.html 配置环境 了解HTTPS 配置CA证书服务器 新建示例网站并发布在IIS ...
- htaccess文件还可以被用来把访问网站的流量劫持到黑客的网站
看是否有文件上传操作(POST方法), IPREMOVED--[01/Mar/2013:06:16:48-0600]"POST/uploads/monthly_10_2012/view.ph ...
- 通过ASP禁止指定IP和只允许指定IP访问网站的代码
过ASP禁止指定IP和只允许指定IP访问网站的代码,需要的朋友可以参考下. 一.禁止指定IP防问网站,并执行相应操作: 代码如下: <% Dim IP,IPString,VisitIP '设置I ...
- StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全
StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全 一.StartSSL个人证书登录申请 1.StartSSL官网: 1.官方首页:http://www.startssl.com/ 2 ...
- IIS7.0 Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站
配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型: 64 位操作系统 了解HTTPS 为什么需要 HTTPS ? ...
- IIS与Apache禁止IP地址直接访问网站
一.IIS 防止恶意域名指向解决方法 首先单击"开始"-"设置"-"控制面板"-"管理工具",找到"Inter ...
- windows/linux VPS云服务器限制IP访问,限制别人的IP访问网站方法
服务器VPS云服务器如何限制IP访问,限制别人的IP访问网站的方法 windows主机IIS限制IP访问方法:首先打开IIS点击“网站”,右键属性,(如果仅给单个网站设置,请选择下边的站点,点右键“属 ...
- 通过cookies跳过验证码登陆页面,直接访问网站的其它URL
我每次手动访问去NN网的一家酒店,就不需要登陆,一旦我用脚本打开就会让我登陆,而登陆页面又有验证码,不想识别验证码,所以就想:“通过cookies跳过验证码登陆页面,直接访问网站的其它URL” 转 ...
- SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期
SpringMVC拦截器实现:当用户访问网站资源时,监听session是否过期 一.拦截器配置 <mvc:interceptors> <mvc:interceptor> < ...
随机推荐
- 洛谷 P10P1343 地震逃生 改错
P1343 地震逃生 题目描述 汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有\(n\)个点,\(m\)条边.1号点为教室,\ ...
- centos6.5修改主机名
centos 修改主机名 0.说明 系统安装后,系统默认的主机名称是localhost,现在想要修改为master.操作需要root权限. 1.方案一:仅当前登录有效,重启后失效 直接在命令行执行命令 ...
- Redis我想入门——数据类型
每一个数据库都有自己的数据类型.同样子redis为我们提供了五种类型的数据——字符串.哈希.列表.集合.有序集合.我们知道关系型数据的数据存放型式是一张二维表.用行和列来表示数据之间的关系.redis ...
- Android开发属性动画
普通动画效果和属性动画效果区别: 普通动画效果的动画播放后只是产生了视觉欺骗,并没有移动真实的控件. 属性动画直接真实的移动控件 AnimationSet动画: TextView t1 = (Text ...
- java8中的stream().filter()的使用和Optional()
转: https://www.cnblogs.com/yimiyan/p/5992440.html Optional: https://www.cnblogs.com/zhangboyu/p/7580 ...
- 20190312 Windows安装Kafka
1. 下载 使用版本2.1.1 官网下载地址 2. 安装 2.1. 前提 已安装ZooKeeper,可参考 20190311 Windows安装ZooKeeper 进行安装ZooKeeper 2.2. ...
- Xen的入门到放弃
Xen的入门到放弃 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Xen 是一个开放源代码虚拟机监视器(VMM),由剑桥大学的"Ina Pratt"和" ...
- JS 将字符串数组用 | 或其他符号分割
var arr = ["吕超","赵云","典韦","关羽","马超","张飞" ...
- sublime 成对括号高亮显示设置
ctrl+shift+p/pcip(Package Control : Install Package)/ BracketHighlighter(括号高亮插件)
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...