Python3 BeautifulSoup爬虫 POJ自动提交
来源:互联网 发布:美国最高法院知乎 编辑:程序博客网 时间:2024/06/08 05:57
POJ 提交代码采用Base64加密方式
import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj(): def __init__(self, userId, passWord): self.userId = userId self.passWord = passWord cj = http.cookiejar.LWPCookieJar() self.opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) urllib.request.install_opener(self.opener) def decode(self , code): bytesString = code.encode(encoding="utf-8") encodestr = base64.b64encode(bytesString) return encodestr def login(self): params = { "user_id1": self.userId, "password1": self.passWord, "B1": "login", "url": "/" } loginUrl = "http://poj.org/login" postData = urllib.parse.urlencode(params).encode(encoding='UTF8') html = self.opener.open(loginUrl, postData).read() soup = BeautifulSoup(html, "xml") return soup.prettify().find("login?action=logout") > -1 def submit(self, pid, language, src): params = { "problem_id": pid, "language": language, "source": src, "submit": "Submit", "encoded": 1 } submitUrl = "http://poj.org/submit" postData = urllib.parse.urlencode(params).encode(encoding='UTF8') self.opener.open(submitUrl, postData) def status(self): statusUrl = "http://poj.org/status?problem_id=&user_id=" + self.userId + "&result=&language=" html = urllib.request.urlopen(statusUrl).read() soup = BeautifulSoup(html, "xml") trs = soup.find_all("tr") for row in trs[5:]: contest = row.contents print(contest[1].string, end="\t") print(contest[3].contents[0].string.split(">")[1], end="\t") try: print(contest[4].contents[0].contents[1].string.split(">")[1], end="\t") except: print(contest[4].contents[0].string.split(">")[1], end="\t") print(contest[7].contents[0].string, end="\t") print(contest[8].contents[0].string, end="\t") print(contest[9].contents[0].string, end="\t\n")if __name__ == '__main__': FORMAT = "[PojAutoSubmit]-----%(message)s------" logging.basicConfig(level=logging.INFO, format=FORMAT) #用户名 , 密码 (明文) poj = SubmitPoj("用户名", "密码") if poj.login(): logging.info("login success!") poj.submit("1700", 2 , poj.decode(SubmitCode.javaCode)) poj.submit("1000", 0 , poj.decode(SubmitCode.cppCode)) logging.info("submit success!") poj.status() logging.info("search status success!")
class SubmitCode(): javaCode = '''import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.PrintWriter; import java.math.BigInteger; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) { new Task().solve() ; } } class Task{ InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out) ; long sum(int left , int right , int[] num){ if(left == right || right == left + 1) return num[right] ; else if(right == left + 2) return num[left] + num[left+1] + num[left+2] ; else{ long way1 = (num[right] + num[left] + num[right-1] + num[left]) ; //(最慢最快)->最快回->(次慢最快)->最快回 long way2 = (num[left+1] + num[left+1] + num[right] + num[left]) ; //(次快最快)->次快回->(最慢次慢)->最快回 return Math.min(way1, way2) + sum(left , right-2 , num) ; } } void solve(){ int t = in.nextInt() ; while(t-- > 0){ int n = in.nextInt() ; int[] num = new int[n] ; for(int i = 0 ; i < n ; i++) num[i] = in.nextInt() ; Arrays.sort(num) ; out.println(sum(0, n-1 , num)) ; } out.flush() ; } } class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } } ''' cppCode='''#include <iostream>using namespace std;int main(){ int a,b; cin >> a >> b; cout << a+b << endl; return 0;} '''if __name__ == '__main__': print(SubmitCode.javaCode)
170906131700AcceptedJava2823B2017-06-19 08:40:34170906121000AcceptedG++134B2017-06-19 08:36:37170860821000Compile ErrorG++47B2017-06-16 17:15:03170860811000AcceptedG++128B2017-06-16 17:14:51170860721000Compile ErrorJava128B2017-06-16 17:10:43170860621000Compile ErrorG++47B2017-06-16 17:07:19170859291030Compile ErrorGCC34B2017-06-16 15:51:16170859261010Compile ErrorGCC34B2017-06-16 15:49:54170859051000Compile ErrorGCC34B2017-06-16 15:45:17170858881001Compile ErrorGCC34B2017-06-16 15:41:43170858821000Compile ErrorJava640B2017-06-16 15:39:36170858781000AcceptedJava479B2017-06-16 15:38:29170857811000Compile ErrorJava420B2017-06-16 14:52:23170857801000Compile ErrorJava560B2017-06-16 14:52:17170857731000AcceptedJava313B2017-06-16 14:48:29170857661000AcceptedJava313B2017-06-16 14:46:57168394633237AcceptedJava5998B2017-04-06 14:11:27168385032763AcceptedJava5510B2017-04-06 09:12:45168354702763AcceptedJava5376B2017-04-05 17:13:41168344573321AcceptedJava2645B2017-04-05 14:02:26
阅读全文
0 0
- Python3 BeautifulSoup爬虫 POJ自动提交
- Python3 BeautifulSoup爬虫 ZOJ自动提交
- Python3 BeautifulSoup爬虫 HDU自动提交
- python3 终端下英汉词典 BeautifulSoup+网络爬虫
- python3 终端下英汉词典 BeautifulSoup+网络爬虫
- python3+BeautifulSoup+tkinter 爬虫 获取学校成绩
- beautifulsoup,python3中的爬虫匹配神器
- python3.3 lxml+beautifulsoup 爬虫说明
- Python3.4 用 BeautifulSoup 爬虫 Navigable String类型转换
- python3实现网络爬虫(2)--BeautifulSoup使用(1)
- python3实现网络爬虫(3)--BeautifulSoup使用(2)
- BeautifulSoup与正则_简单爬虫python3实现
- Python3.6 爬虫初体验--urllib、beautifulsoup(一)
- python3爬虫(三) BeautifulSoup模块的安装和介绍
- Python3爬虫学习笔记(4.BeautifulSoup库详解)
- BeautifulSoup Python3
- 爬虫:BeautifulSoup
- BeautifulSoup 爬虫
- TCP/IP通信和UDP通信之间的区别
- 移动端拖动惯性
- Linux新手必备:8个实用的Linux终端命令
- Spring手动获取指定Bean
- Java Socket套接字
- Python3 BeautifulSoup爬虫 POJ自动提交
- kafka数据在zookeeper的存储结构(基于kafka0.8版本)
- 后台常见报错
- Tomcat单独可以启动,在Eclipse中启动访问404
- Ubuntu14.04 启动terminal进入命令行之前有log信息输出
- Android读写SD卡中的txt文件
- 微信获取code和openid
- day08 ARM体系结构与编程、流水线
- 整形数转换成字符串