我正在使用Nokogiri和open-uri来抓取网页上标题标签的内容,但是在重音字符方面遇到了麻烦.处理这些问题的最佳方法是什么?这是我正在做的事情:
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML(open(link))
title = doc.at_css("title")
Run Code Online (Sandbox Code Playgroud)
此时,标题如下所示:
抹布\ 303\271
代替:
肉酱
我怎样才能让nokogiri返回正确的字符(例如在这种情况下为ù)?
这是一个示例网址:
http://www.epicurious.com/recipes/food/views/Tagliatelle-with-Duck-Ragu-242037
我读了一些代码,其中有人用Ruby做过这个:
puts ('A'..'Z').to_a.join(',')
Run Code Online (Sandbox Code Playgroud)
输出:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
Run Code Online (Sandbox Code Playgroud)
有什么东西Javascript可以让这一切变得容易吗?如果没有,是否有节点模块允许类似的东西?
我有一个我想要按两个属性排序的对象数组:
排序顺序:desc
通过一个属性对此对象进行排序不是问题,但在这种情况下,我不知道如何使其工作.
我希望找到与某个模式匹配的元素的所有属性.
所以对于一个元素
<element s2="1" name="aaaa" id="1" />
<element s3="1" name="aaaa" id="2" />
Run Code Online (Sandbox Code Playgroud)
我希望能够找到以's'开头的所有属性(为第一个元素返回s1的值,为第二个元素的值返回s3).
如果这超出了xpath的能力,请告诉我.
如果一个句子包含"Hello World"(没有引号),那么我需要返回true并做一些事情.可能的句子可能是这样的:
var sentence = "This is my Hello World and I like widgets."
var sentence = "Hello World - the beginning of all"
var sentence = "Welcome to Hello World"
if ( sentence.contains('Hello World') ){
alert('Yes');
} else {
alert('No');
}
Run Code Online (Sandbox Code Playgroud)
我知道.contains不起作用,所以我正在找一些有用的东西.正则表达式是这里的敌人.
我有一个图像,并将其移动到我的网页(JavaScript),如下所示:
satelliteImage.style.top = coordinates.top + "px";
satelliteImage.style.left = coordinates.left + "px";
Run Code Online (Sandbox Code Playgroud)
不幸的是,除了Chrome之外,所有浏览器的性能都非常差.瓶颈是渲染速度.我对IE没有希望,但我想至少改进Firefox.与样式更改相比,有没有人在移动图像时体验HTML5 Canvas的性能?
我需要一些关于找到元素位置的帮助.我正在研究一个电子书阅读器,它的所有Html与CSS.所有html逐页分段,我必须找到这样的元素
<span name="Note" style="background-color:rgb(255,255,204)">Example</span>
每个人都建议像这样的代码;
function position(elem) {
var left = 0,
top = 0;
do {
left += elem.offsetLeft;
top += elem.offsetTop;
} while ( elem = elem.offsetParent );
return [ left, top ];
}position(document.getElementsByName('Note')[0]);
Run Code Online (Sandbox Code Playgroud)
但它对我不起作用; 我需要元素在JavaScript中滚动的真实位置.
我正在使用ACE编辑器进行交互式JavaScript编辑.当我将编辑器设置为JavaScript模式时,ACE会自动确定代码是否有效,并且错误消息和行号不会突出显示.
在change事件处理程序期间,我想在我尝试之前检测ACE是否认为代码有效eval().我认为我可以这样做的唯一方法是:
var jsMode = require("ace/mode/javascript").Mode;
var editor = ace.edit('mycode'), edEl = document.querySelector('#mycode');
editor.getSession().setMode(new jsMode);
editor.getSession().on('change',function(){
// bail out if ACE thinks there's an error
if (edEl.querySelector('div.ace_gutter-cell.ace_error')) return;
try{
eval(editor.getSession().getValue());
}catch(e){}
});
Run Code Online (Sandbox Code Playgroud)
然而:
change回调发生.因此,我实际上必须等待超过500毫秒(JavaScript工作人员开始之前的延迟):
editor.getSession().on('change',function(){
setTimeout(function(){
// bail out if ACE thinks there's an error
if (edEl.querySelector('div.ace_gutter-cell.ace_error')) return;
try{
eval(editor.getSession().getValue());
}catch(e){}
},550); // Must be longer than timeout delay in javascript_worker.js
});
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法,在JS模式的未记录的API中,询问是否有任何错误?