Python: 点击按钮

4 投票
1 回答
13539 浏览
提问于 2025-04-17 17:01

我在点击这个按钮时遇到了问题,这个按钮在HTML代码中看起来是这样的:

<form method="post">
<br>
<input type="hidden" value="6" name="deletetree">
<input type="submit" value="Delete Tree" name="pushed">
</form>

而需要生成的链接看起来是这样的:

http://mysite.com/management.php?Category=2&id_user=19&deteletree=6&pushed=Delete+Tree

更新:我试过这个,但它不管用:

form_data = urllib.urlencode({'Category' : '2', 'suid' : '19', 'deletetree' : '6', 'pushed' : 'Delete+Tree' })
urllib2.urlopen("management.php", form_data)

这是我登录的方式:

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.29 Safari/525.13')] 
username = "user" 
password = "pass" 
USER_ID = '6'

    loginonsite = login("http://mysite.com/myprofile.php",
                        "login_username=%s&login_password=%s&suid=%s".format(username, password, USER_ID)

)

1 个回答

5

你可以使用requests库来发送一个POST请求。

import requests
data = {'Category' : '2', 'suid' : '19', 'deletetree' : '6', 'pushed' : 'Delete+Tree' }
response = requests.post('http://mysite.com/management.php', data=data)

print response.text

现在越来越多网页的内容是通过JavaScript生成的,所以我发现自己在做这种自动化时,常常使用Selenium的webdriver来直接控制像Chrome这样的真实浏览器...

更新:听起来你需要先登录

现在,requests也可以传递cookies。所以如果你想发送一个已登录的请求,你可以这样做:

login_data = data={'username': 'user', 'password': 'pass'
post_data = {
    'Category' : '2', 'suid' : '19', 'deletetree' : '6', 'pushed' : 'Delete+Tree'
}
login_response = requests.get('http://mysite.com/myprofile.php', data=login_data)
form_response = requests.post(
    'http://mysite.com/management.php',
     data=post_data, 
     cookies=login_response.cookies
)

所以,你先登录,然后在下一个请求中使用响应中的cookies。这样应该可以工作。不过显然我无法测试那段代码是否适合你的具体情况。

撰写回答