ruby - 在 Mechanize 中使用带有 CSS 选择器的 page.at

标签 ruby web-scraping mechanize mechanize-ruby

我正在尝试使用 Mechanize 抓取网页,其结构如下:

<div id="searchResultsBox">  
    <div class="listings-wrap">
      <div class="listings-header">
        <div class="listing-cat">Category</div>
        <div class="listing-name">Name</div>
      </div>
      <ul class="listings">
        <li class="listing">
          <a href="/ShowRatings.jsp?tid=1143052">
            <span class="listing-cat">
              <span class="icon"></span>
              TEXT
              </span>
            <span class="listing-name">
              <span class="main">TEXT</span>
              <span class="sub">TEXT</span>
            </span>
          </a>
        </li>
         ...

我想导航到<a>后面的页面HTML 元素。现在,我有:
agent = Mechanize.new
page = agent.get("URL")
page = page.at('#searchResultsBox > div.listings-wrap > ul > li:nth-child(1) > a')

但它一直返回 NIL(由 puts page.class 验证)。

我也尝试使用 sleep尝试确保页面在继续之前有时间加载。

有什么我做错了吗?我认为使用 CSS 选择器可以解决问题。

最佳答案

也许网站内容是通过 JavaScript 动态加载的。

检查您的 page 的内容变量并查看那里的内容是否完整。

如果内容不完整,则意味着必须有一些其他请求,返回该数据的服务器。您可以打开 Chrome DevTools(或其他工具)搜索它们。在“网络”选项卡中,您将看到网站发出的所有请求。搜索包含您需要的数据的那个,然后通过 Mechanize 抓取它。

关于ruby - 在 Mechanize 中使用带有 CSS 选择器的 page.at,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735948/

相关文章:

sql - 提取 Rails 中关联的最后一个值

ruby - 使用 Fermat 分解方法的最大素因子 Ruby

ruby - 使用 ruby​​ 创建 sqlite 数据库需要很长时间

vba - 使我的解析器向下滚动时出现问题

ruby - 如何使用 Mechanize 从列表项中获取文本?

ruby-on-rails - 如何使用带有 ruby​​ 的 Mechanize 循环创建日志文件

mysql - 尝试连接到 MySQL 本地主机服务器,但浏览器无法加载并要求我下载文件

python - Scrapy选择器有select()方法吗?

python - 按 ID 查找的 Selenium Web 驱动程序问题

python - 在 python 中捕获 http 调用和 header