【问题标题】:Python: Send multiple POST requests on the same pagePython:在同一页面上发送多个 POST 请求
【发布时间】:2016-06-13 19:10:28
【问题描述】:

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

例如,如果用户 ID 自动递增并且前 1000 个关注者关注了我,那么是否可以在 POST 请求不返回重新加载的网站上运行类似以下内容:

** 该网站显然需要用户登录才能执行此类操作,因此使用了 selenium 方法。

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 请求的 sn-p 示例。

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

【问题讨论】:

    标签: python selenium selenium-webdriver http-post


    【解决方案1】:

    为什么它不能工作?

    “POST 请求不返回重新加载”请解释您的意思!

    不管怎样,requests 似乎更适合这个任务:

    这是一个简单的例子:

    import requests
    
    r = requests.get("http://example.com/myfollowers")
    print("myfollowers returned: " + r.content)
    
    for userid in range(1, 1001):
        r = requests.post("http://example.com/unfollow/{}".format(userid))
        print("unfollow returned: " + r.content)
    

    【讨论】:

    • 不返回重新加载是指它不提交表单并返回页面刷新/新页面(程序可以继续在同一选项卡中运行而无需等待服务器响应)。
    • 那么这仍然有效。最后一行的r.content 将为空。
    【解决方案2】:

    不知道如何使用 selenium 网络驱动程序。但您可以使用 AJAX 发送多个发布请求。它非常简单的语言,如果你知道一点 javascript,你可以在 2 天内学会它。你可以向 w3schools 学习 试试看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2015-02-11
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多