python模拟登录poj提交代码并抓取评测结果,代码编写
时间: 2023-06-04 08:07:46 浏览: 104
好的,这个问题属于技术问题。以下是一个简单的Python模拟登录POJ提交代码并抓取评测结果的代码示例:
```python
import requests
# 登录POJ,获取cookie
def login(username, password):
s = requests.Session()
login_url = "http://poj.org/login"
login_data = {
"user_id1": username,
"password1": password,
"B1": "login",
"url": "/"
}
s.post(login_url, data=login_data)
return s
# 提交代码
def submit_code(s, problem_id, language, source_code):
submit_url = "http://poj.org/submit"
submit_data = {
"problem_id": problem_id,
"language": language,
"source": source_code
}
s.post(submit_url, data=submit_data)
# 获取评测结果
def get_result(s, run_id):
status_url = "http://poj.org/status"
params = {
"user_id": "",
"result": "",
"language": "",
"top": run_id
}
r = s.get(status_url, params=params)
table_start = r.text.find("<table cellpadding=0 cellspacing=0 border=0 width=100%>")
table_end = r.text.find("</table>", table_start)
table_html = r.text[table_start:table_end + 8]
return table_html
# 使用示例
username = "your_username"
password = "your_password"
problem_id = "1000"
language = "G++"
source_code = """
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a + b << endl;
return 0;
}
"""
s = login(username, password)
submit_code(s, problem_id, language, source_code)
table_html = get_result(s, "12345678") # 替换成实际提交的run id
print(table_html)
```
其中,`login`函数模拟登录POJ并返回一个`Session`对象,`submit_code`函数提交代码,`get_result`函数获取评测结果。你可以根据实际需要修改代码中的`username`、`password`、`problem_id`、`language`和`source_code`等参数,并替换`get_result`函数中的`run_id`。