我只使用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)
这是一个列表,显示了页面上的所有链接。我注意到它从蓝色的“类别”项目跳转到搜索结果列表中。换句话说,将跳过过滤器。
以下是接下来进行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