Python:在同一页面上发送多个POST请求

时间:2016-06-13 19:10:29

标签: python selenium selenium-webdriver http-post

是否可以使用selenium webdriver向服务器发送多个HTTP POST请求?

例如,如果用户ID是自动递增的,前1000名粉丝跟随我,是否可以在POST请求不返回重新加载的站点上运行类似下面的内容:

**网站显然要求用户登录以执行此类操作,因此采用硒方式。

driver = webdriver.Firefox()
driver.get("http://example.com/myfollowers")

for userid in range(1, 1001):
    driver.post("http://example.com/unfollow/{}".format(userid))

driver.close()

以下是对网站发布的Post请求的代码段示例。

General:
Request URL:http://example.com/unfollow/1
Request Method:POST
Status Code:200 OK
Remote Address:192.168.1.1:80
Response Headers

Request headers:
Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript
Accept-Encoding:gzip, deflate
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Content-Length:0
Cookie:ob-i=1; 
Host:example.com
Origin:http://example.com
Referer:http://example.com/user/followings
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.26.02 Safari/537.36
X-Requested-With:XMLHttpRequest

2 个答案:

答案 0 :(得分:0)

不知道如何使用selenium web驱动程序。但您可以使用AJAX发送多个帖子请求。它非常简单的语言,你可以在2天内学习它,如果你知道一点点javascript。你可以从w3schools学习它尝试一下。

答案 1 :(得分:0)

为什么它不起作用?

" POST请求不会返回重新加载"请解释一下你的意思!

无论如何,requests似乎更适合这项任务:

这是一个简单的例子:

validate :one_vote_per_question

#self is in the 'vote' context so assuming you followed standard rails practices:
def one_vote_per_question
  if Vote.where("voter_id = ? AND question_id = ?", self.voter.id, self.choice.question.id).exists?
     errors.add(:vote, "You have already voted on this question")
  end
end