我想抓一个网站,关于条款(“猫”,“狗”,“斑马”), 我该怎么做呢?我希望结果是给定字符串的所有实例,&也许甚至是一个计数。我只能通过标签找到方法,但不能在标签内部找到。 我应该使用什么程序或宝石?
答案 0 :(得分:1)
如果您使用Ruby,Nokogiri / Mechanize应该是您应该使用的工具。使用这些工具,网站抓取非常简单。
您也可以使用javascript执行此操作,我觉得这是最简单的方法。
查看此链接 - http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs/
我使用它实现了一个简单的屏幕抓取,它运行得很好。
答案 1 :(得分:0)
听起来你需要正则表达式。编写正则表达式以匹配给定的字符串。希望这会让你开始
答案 2 :(得分:0)
我觉得易于使用的PHP库是http://simplehtmldom.sourceforge.net/
请参阅链接中的示例。
答案 3 :(得分:0)
假设这是我们的文件:
doc = Nokogiri::HTML('<p>dogs</p><p>cats</p><p>zebra</p><p>bar</p><p>zebras</p><p>foo</p>')
content
是:
"dogscatszebrabarzebrasfoo"
使用scan
为我们提供了一个字符串出现的数组:
doc.content.scan('dogs')
[
[0] "dogs"
]
结合所有这些:
doc = Nokogiri::HTML('<p>dogs</p><p>cats</p><p>zebra</p><p>bar</p><p>zebras</p><p>foo</p>')
%w[dogs cats zebra].each do |a|
puts '%d %s' % [doc.content.scan(a).count, a]
end
将输出:
1 dogs
1 cats
2 zebra
虽然这个示例看起来很容易使用正则表达式对原始HTML解析结果,但这条路径会导致疯狂。 HTML太不规则而无法使用模式进行扫描,误报的机会太高。坚持使用解析器,使用它来提取内容,然后对此进行处理。