例如,如果我有一个无序列表,可以说,
<ul>
<li class="foo">Foo</li>
<li class="bar">Bar</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我可以选择foo作为$('ul li.foo'),$('li.foo')或$('.foo').
那么哪种方式更有效(如果有的话)以及为什么.或者是在选择子项时指定父母只是出于删除任何冲突的唯一原因,以防有其他元素具有相同的类名!
我试图基本上尝试删除.字符串中的内容.extension
所以我正在使用
'.extension'[1..10] #gives extension
Run Code Online (Sandbox Code Playgroud)
当然,这将适用于10个字符,我将如何使它适用于任何长度.我不知道要搜索什么,因为我不知道这个数组样式[x..y]是什么.
我似乎无法解决这个问题,希望有人可以提供帮助:
Nilfacs是从哈希中提取的字符串数组.
对于这一行:
looping_finaltext = finaltext.reject {|sentence| nilfacs.any? {|fac| sentence =~ /#{(fac)}/i}}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:warning: character class has ']' without escape: /[[]]/
和
block (2 levels) in <main>': premature end of char-class: /[[]]/i (RegexpError)
所有字符串都只是普通单词(如"条件"),不包含需要转义的字符.
这是否表明某些意外的东西被作为字符串输入数组?或者这行中的语法有问题吗?
我想点击我用xpath(nokogiri)选择的Mechanize的链接.
怎么可能?
next_page = page.search "//div[@class='grid-dataset-pager']/span[@class='currentPage']/following-sibling::a[starts-with(@class, 'page')][1]"
next_page.click
Run Code Online (Sandbox Code Playgroud)
问题是nokogiri元素没有点击功能.
我无法读取href(URL)并发送get请求,因为链接已定义onclick函数(无href属性).
如果那是不可能的,有哪些替代方案?
最近我开始学习Ruby,我正在试验Ruby如何在单个对象上调用方法.但是,下面的代码片让我很难,因为我没有意识到它是如何工作的
a = 4
b = -3
c = 2
puts a*b-c # operator precedence preserved
puts a . * b . - c # operator precedence not preserved
puts a.send(:*, b).send(:-, c) # operator precedence preserved
puts a-b*c # operator precedence preserved
puts a . - b . * c # operator precedence preserved
puts a.send(:-, b).send(:*, c) # operator precedence not preserved
Run Code Online (Sandbox Code Playgroud)
输出:
-14
-20
-14
10
10
14
Run Code Online (Sandbox Code Playgroud)
谁能够解释运营商优先权如何在这里工作?我假设每个部分中的所有三种语法都应该反映相同的含义.如果已经提出或解释过这个问题,我先道歉.
给定一个元素作为上下文我想选择前面的兄弟元素并检查它是否具有特定的名称.需要注意的是,如果存在具有非空白内容的插入文本节点,我不想选择它.
例如,给定这个XML文档......
<r>
<a>a1</a><a>a2</a>
b
<a>a3</a>
<a>a4</a>
<b/>
<a>a5</a>
</r>
Run Code Online (Sandbox Code Playgroud)
…然后:
<a>紧接在它之前没有兄弟元素)<a>).我可以检查,如果前一兄弟是<a>用preceding-sibling::*[1][name()="a"]
但是,我无法弄清楚如何说"选择以下兄弟节点,无论元素或文本,看看是不是文本或normalize-space(.)="".我最好的猜测是这样的:
preceding-sibling::*[1][name()="a"][following-sibling::node()[1][not(text()) or normalize-space(.)=""]]
Run Code Online (Sandbox Code Playgroud)
......但似乎没有效果.
这是我的测试Ruby文件:
require 'nokogiri'
xpath = 'preceding-sibling::*[1][name()="a"][following-sibling::node()[1][not(text()) or normalize-space(.)=""]]'
fragment = Nokogiri::XML.fragment '<a>a1</a><a>a2</a> b <a>a3</a> <a>a4</a> <b/> <a>a5</a>'
fragment.css('a').each{ |a| p [a.text,a.xpath(xpath).to_s] }
#=> ["a1", ""]
#=> ["a2", ""]
#=> ["a3", "<a>a2</a>"]
#=> ["a4", "<a>a3</a>"]
#=> ["a5", ""]
Run Code Online (Sandbox Code Playgroud)
"a2"和"a3"的结果是错误的,让我感到困惑.它<a>正确地找到了前面的内容,但是后来没有正确地验证第一个后续兄弟是不是文本(应该允许"a2"找到"a1")还是只有空格(这应该防止"a3")找到"a2".
编辑:这是我写的XPath,以及我打算做的事情:
preceding-sibling::*[1][name()="a"]…- 找到第一个前面的元素,并确保它是一个<a>.这看似按预期工作.
[following-sibling::node()[1][…]] …
什么是非数字化HTML/XML实体的良好实现,例如 用ASCII等效替换它们?
表示为单元测试:
local orig = "It's the "end" &ok; "
local fixd = unescape(orig) -- Implement this
assert( fixd == "It's the \"end\" &ok;\n" )
Run Code Online (Sandbox Code Playgroud) 我需要使用Rails和Nokogiri解析HTML.这是HTML:
<body>
<div id="mama">
<div class="test1">text</div>
<div class="test2">text2</div>
</div>
<div id="mama">
<div class="test1">text</div>
<div class="test2">text2</div>
</div>
<div id="mama">
<div class="test1">text</div>
<div class="test2">text2</div>
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我应该如何形成循环问题?我已经尝试了很多次,但仍然收到错误或结果不好......
doc.xpath('//div[@id='mama']/?or what?').each do |node|
parse_file.puts text1
parse_file.puts text2
parse_file.puts text1
parse_file.puts \n
end
Run Code Online (Sandbox Code Playgroud)
结果应该是这样的
text from first mama
text2 from first mama
text from first mama
text from second mama
and so on...
Run Code Online (Sandbox Code Playgroud) 嗨刚刚进入Ruby,我正在尝试学习一些基本的文件读取命令,我还没有找到任何可靠的来源.
我试图通过该文件中的某些行,直到文件的末尾.
所以在文件里面写着FILE_SOURCES我想读取文件末尾的所有来源,并将它们放在一个文件中.
我发现打印整个文件,并替换文件中的单词,但我只是想读取文件中的某些部分.
我想知道如何在jQuery加载时将[at]替换为@
这段代码
<p id="nospam">myself[at]myemail.com</p>
Run Code Online (Sandbox Code Playgroud)
如果您认为对垃圾邮件不起作用......欢迎您的建议!