Ruby 如何单击LI';他在用机械化吗?

Ruby 如何单击LI';他在用机械化吗?,ruby,web-scraping,nokogiri,mechanize,Ruby,Web Scraping,Nokogiri,Mechanize,我只使用Nokogiri刮取了静态页面。我从未尝试过自动化,目前我正在看Mechanize是否能满足我的需要 假设我已经在Yelp中的一个城市的搜索结果页面上,我正在尝试使用Mechanize单击一些项目。目标是到达WiFi部分,该部分在过滤器中有点深 经过一些故障排除,我想我意识到问题在于解析没有显示我需要单击的LI。我认为Mechanize可以处理诸如链接和表单之类的事情,但是它能点击一个LI吗 以下是我正在使用的: require 'mechanize' agent = Mechaniz

我只使用Nokogiri刮取了静态页面。我从未尝试过自动化,目前我正在看Mechanize是否能满足我的需要

假设我已经在Yelp中的一个城市的搜索结果页面上,我正在尝试使用Mechanize单击一些项目。目标是到达WiFi部分,该部分在过滤器中有点深

经过一些故障排除,我想我意识到问题在于解析没有显示我需要单击的LI。我认为Mechanize可以处理诸如链接和表单之类的事情,但是它能点击一个LI吗

以下是我正在使用的:

require 'mechanize'

agent = Mechanize.new

page = agent.get('http://www.yelp.com/search?find_desc=&find_loc=San+Francisco%2C+CA&ns=1')

all_filters = agent.page.at('.all-filters-toggle')

p agent.click(all_filters)
这是给我一个什么似乎是页面上的所有链接列表。我注意到它从蓝色的“分类”项目跳转到搜索结果列表中。换句话说,将跳过过滤器

  • 有没有办法用Mechanize实现这一点
  • 上面的代码是否正确?我认为打印出来的结果应该是整个页面,包括新切换的项目
  • 以下是访问WiFi搜索的后续步骤:

    # search a city based on user input
    # click on All Filters (list item)
    # click on More Features (link)
    # click on Wi-Fi (link)
    # select both Free and Paid (checkboxes)
    # click Search (button/form?)
    # store results
    

    你知道Yelp有一个,这样就不需要刮他们的页面了,对吗?@theTinMan我是API的新手,但在开始刮页面之前看了一眼他们的页面。我在过滤器(WiFi)中找不到任何东西。如果你碰巧看到它,我会重视任何提示/指导。我会向他们的API支持人员发送一份说明。最好先看看他们支持什么。您还可以获取他们的代码,找出如何添加代码(如果还没有),然后提交拉取请求。这只是作为最后的手段,你应该恢复到刮。刮取速度较慢,更容易被破坏,更可能与他们的服务条款相冲突,从而导致您的代码被禁止。@我不知道的那个人API有那么灵活和平易近人。感谢insight.api以标准化的方式提供与UI相同的数据。与呈现UI或抓取相比,它们速度更快,占用的CPU更少。如果他们没有办法获得您想要的数据,那么他们应该这样做,您也有机会通过更可靠的方法获得您想要的数据。