【发布时间】:2017-06-27 23:19:00
【问题描述】:
我正在创建一个网站抓取工具。有一个表格用来改变当前页面。
这是我为 POST 请求提交表单的方式,但它似乎一遍又一遍地获取相同的页面。
这里是一些示例代码:
pages = {
"total_pages" => 19,
"p1" => '1234/1456/78990/123324345/12143343214345/231432143/12432412/435435/',
"p2" => '1432424/123421421/345/435/6/65/5/34/3/2/21/1243',
..
..
..
}
idx = 1
p_count = pages["total_pages"]
#set up the HTTP request to change pages to get all the auction results
uri = URI.parse("http://somerandomwebsite.com?listings")
http = Net::HTTP.new(uri.host, uri.port)
req = Net::HTTP::Post.new(uri.request_uri)
p_count.times do
puts "On loop sequence: #{idx}"
pg_num = "p#{idx}"
pg_content = pages["#{pg_num}"]
req.set_form_data({"page" => "#{pg_num}", "#{pg_num}" => "#{pg_content}"})
response = http.request(req)
page = Nokogiri::HTML(response.body)
idx = idx + 1
end
看起来page 永远不会改变。每次我希望确保正确的参数被传递时,有没有办法查看完整请求的样子?似乎几乎不可能确定有关req 的任何信息。
【问题讨论】:
-
请阅读“minimal reproducible example”。您的代码将无法运行,我们必须对其进行更改以进行测试以识别问题。这浪费了我们的时间。我建议不要使用 Net::HTTP,而是使用 Ruby 存在的众多 HTTP 客户端之一。如果您正在发明一种新的服务器类型,Net::HTTP 非常棒,但对于正常的 HTTP 工作来说,它是非常低级的,尤其是当您只是请求页面时。就查看请求而言,httpbin.org 可能非常有用。