如何使用 Nokogiri 解析 Google 搜索页面以获取结果统计信息和 AdWords 计数
How to parse a Google search page to get result statistics and AdWords count using Nokogiri
我正在尝试抓取 Google 搜索页面以学习抓取,使用如下代码:
doc = Nokogiri::HTML(open("https://www.google.com/search?q=cardiovascular+diesese"))
我想在每个搜索页面中获取结果统计文本:
但是我在解析的HTML中找不到内容的位置。我可以在浏览器中检查页面并看到它在 <div id="result-stats">
中。我试过这个来找到它:
doc.at_css('[id="result-stats"]').text
您需要使用Selenium WebDriver 来获取动态内容。 Nokogiri 无法单独解析它。
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get "https://www.google.com/search?q=cardiovascular+diesese"
doc = Nokogiri::HTML driver.page_source
doc.at_css('[id="result-stats"]').text
你对 CSS 的使用很尴尬。考虑一下:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html>
<body>
<div id="result-stats">foo</div>
</body>
</html>
EOT
doc.at_css('[id="result-stats"]').text # => "foo"
doc.at('#result-stats').text # => "foo"
CSS 使用 #
代替 id
,因此 '[id="result-stats"]'
不必要地冗长。
Nokogiri 足够聪明,知道在查看选择器时使用 CSS;在多年的使用过程中,我只骗过它一次,并且被迫使用通用 search
或 at
方法的 CSS/XPath 特定版本。通过使用通用方法,您可以在 CSS 和 XPath 之间更改选择器,而不必担心被调用的方法。 “Using 'at', 'search' and their siblings”谈到这个。
此外,为了好玩,Nokogiri 应该拥有 CSS 的所有 jQuery 扩展,就像 v2.0 roadmap for Nokogiri.
上的那些一样
我正在尝试抓取 Google 搜索页面以学习抓取,使用如下代码:
doc = Nokogiri::HTML(open("https://www.google.com/search?q=cardiovascular+diesese"))
我想在每个搜索页面中获取结果统计文本:
但是我在解析的HTML中找不到内容的位置。我可以在浏览器中检查页面并看到它在 <div id="result-stats">
中。我试过这个来找到它:
doc.at_css('[id="result-stats"]').text
您需要使用Selenium WebDriver 来获取动态内容。 Nokogiri 无法单独解析它。
require 'selenium-webdriver'
driver = Selenium::WebDriver.for :firefox
driver.get "https://www.google.com/search?q=cardiovascular+diesese"
doc = Nokogiri::HTML driver.page_source
doc.at_css('[id="result-stats"]').text
你对 CSS 的使用很尴尬。考虑一下:
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html>
<body>
<div id="result-stats">foo</div>
</body>
</html>
EOT
doc.at_css('[id="result-stats"]').text # => "foo"
doc.at('#result-stats').text # => "foo"
CSS 使用 #
代替 id
,因此 '[id="result-stats"]'
不必要地冗长。
Nokogiri 足够聪明,知道在查看选择器时使用 CSS;在多年的使用过程中,我只骗过它一次,并且被迫使用通用 search
或 at
方法的 CSS/XPath 特定版本。通过使用通用方法,您可以在 CSS 和 XPath 之间更改选择器,而不必担心被调用的方法。 “Using 'at', 'search' and their siblings”谈到这个。
此外,为了好玩,Nokogiri 应该拥有 CSS 的所有 jQuery 扩展,就像 v2.0 roadmap for Nokogiri.
上的那些一样