我想抓取一个网站,对于术语(“猫”、“狗”、“斑马”),我该怎么做?我希望它的结果是给定字符串的所有实例,甚至可能是一个计数。我只能通过标签找到方法,而不是在标签内部。我应该使用什么程序或 gem?
问问题
131 次
4 回答
1
如果您为此使用 Ruby,那么 Nokogiri / Mechanize 应该是您应该使用的工具。使用这些工具进行网站抓取非常简单。
您也可以使用 javascript 来执行此操作,我认为这是最简单的方法。
检查此链接 - http://blog.nodejitsu.com/jsdom-jquery-in-5-lines-on-nodejs/
我已经使用它实现了一个简单的屏幕抓取,并且效果很好。
于 2012-08-21T18:17:13.370 回答
0
听起来你需要正则表达式。编写正则表达式以匹配给定的字符串。希望这会让你开始
于 2012-08-21T18:00:58.300 回答
0
我发现易于使用的 PHP 库是http://simplehtmldom.sourceforge.net/
请参阅链接中的示例。
于 2012-08-21T18:10:45.723 回答
0
假设这是我们的文档:
doc = Nokogiri::HTML('<p>dogs</p><p>cats</p><p>zebra</p><p>bar</p><p>zebras</p><p>foo</p>')
是content
:
"dogscatszebrabarzebrasfoo"
Usingscan
给了我们一个字符串出现的数组:
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 太不规则了,无法使用模式进行扫描,误报的机会也太高了。坚持使用解析器,使用它来提取内容,然后对其进行处理。
于 2012-08-21T21:03:32.177 回答