使用 Nokogiri 和 Mechanize 抓取连续页面直到最后一页
Scraping successive pages until the last page using Nokogiri and Mechanize
我正在尝试从网站上抓取多个页面。我想抓取一个页面,然后单击下一步,获取该页面,然后重复直到我到达终点。
到目前为止我写了这个:
page = agent.submit(form, form.buttons.first)
#submitting a form
while lien = page.link_with(:text=>'Next')
# while I have a next link on page, keep scraping
html_body = Nokogiri::HTML(body)
links = html_body.css('.list').xpath("//table/tbody/tr/td[2]/a[1]")
links.each do |link|
purelink = link['href']
puts purelink[/codeClub=([^&]*)/].gsub('codeClub=', '')
lien.click
end
end
不幸的是,使用这个脚本我在无限循环中继续抓取同一页面...我怎样才能实现我想做的事情?
我会试试这个,将 lien.click
替换为 page = lien.click
。
它应该看起来更像这样:
page = form.submit form.button
scrape page
while link = page.link_with :text => 'Next'
page = link.click
scrape page
end
此外,您不需要使用 nokogiri 解析页面主体,mechanize 已经为您完成了。
我正在尝试从网站上抓取多个页面。我想抓取一个页面,然后单击下一步,获取该页面,然后重复直到我到达终点。 到目前为止我写了这个:
page = agent.submit(form, form.buttons.first)
#submitting a form
while lien = page.link_with(:text=>'Next')
# while I have a next link on page, keep scraping
html_body = Nokogiri::HTML(body)
links = html_body.css('.list').xpath("//table/tbody/tr/td[2]/a[1]")
links.each do |link|
purelink = link['href']
puts purelink[/codeClub=([^&]*)/].gsub('codeClub=', '')
lien.click
end
end
不幸的是,使用这个脚本我在无限循环中继续抓取同一页面...我怎样才能实现我想做的事情?
我会试试这个,将 lien.click
替换为 page = lien.click
。
它应该看起来更像这样:
page = form.submit form.button
scrape page
while link = page.link_with :text => 'Next'
page = link.click
scrape page
end
此外,您不需要使用 nokogiri 解析页面主体,mechanize 已经为您完成了。