在Objective C中点击HTML表单 - 像在Python中使用mechanize一样

2 投票
1 回答
832 浏览
提问于 2025-04-17 02:41

我在Python中有一段代码,用mechanize这个库可以很简单地打开一个网址,然后点击提交按钮:

from mechanize import ParseResponse, urlopen, urljoin

response = urlopen("http://www.somesite.com/somepage")
forms = ParseResponse(response, backwards_compat=False)
form = forms[0]

print urlopen(form.click()).read()

现在我想问的是:有没有什么库或者简单的方法可以在Objective-C中做到这一点呢?

我见过一些类似的例子,使用NSURL的代码比较复杂,但因为我需要对很多不同的网站做这个操作,所以每次都要写几十行代码并调试,实在是太麻烦了。如果能像用mechanize那样简单就好了。

祝好,
布鲁诺

1 个回答

2

看看这个网站:http://allseeing-i.com/ASIHTTPRequest/。虽然它可能不是你想要的,但你可以把POST或GET的值发送到表单的目标页面。

假设你有一个页面http://test.com/form.php,上面有以下的表单:

<form name="login" method="POST" action="action.php">
    <input name="username"><br />
    <input name="password"><br>
    <input type="submit">
</form>

你可以使用这段代码来提交这个表单。

NSURL *url = [NSURL URLWithString:@"http://test.com/action.php];
ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
[request setPostValue:@"Admin" forKey:@"username"];
[request setPostValue:@"1234" forKey:@"password"];
[request startSynchronous];

撰写回答