Python3 BeautifulSoup爬虫 HDU自动提交
2017-06-19 13:59
323 查看
import http.cookiejar import logging import time import urllib.parse import urllib.request from bs4 import BeautifulSoup from submitcode import SubmitCode class SubmitHDdu(): 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) self.languageMap = {} self.languageMap["Cpp"] = 0 self.languageMap["Java"] = 5 def login(self): params = { "username": self.userId, "userpass": self.passWord, "login": "Sign+In" } loginUrl = "http://acm.hdu.edu.cn/userloginex.php?action=login" postData = urllib.parse.urlencode(params).encode(encoding='UTF8') html = self.opener.open(loginUrl, postData).read() soup = BeautifulSoup(html, "xml") return soup.prettify().find("Sign Out") > -1 def submit(self, pid, language, src): params = { "problemid": pid, "language": self.languageMap.get(language), "usercode": src, "check": 0 } submitUrl = "http://acm.hdu.edu.cn/submit.php?action=submit" postData = urllib.parse.urlencode(params).encode(encoding='UTF8') self.opener.open(submitUrl, postData) def status(self): statusUrl = "http://acm.hdu.edu.cn/status.php?first=&pid=&user=" + self.userId + "&lang=0&status=0" html = urllib.request.urlopen(statusUrl).read() soup = BeautifulSoup(html, "xml") fonts = soup.find_all("font")[2:] trs = soup.find_all("tr")[10:] n = len(trs) for i in range(0, n): contents = trs[i].contents print(contents[1].string.split(">")[1], end="\t") print(contents[2].string, end="\t") print(fonts[i].string.split(">")[1], end="\t") print(contents[4].contents[0].string, end="\t") print(contents[5].string, end="\t") print(contents[6].string, end="\t") print(contents[7].string, end="\t") print(contents[8].string) if __name__ == '__main__': FORMAT = "[ZojAutoSubmit]-----%(message)s------" logging.basicConfig(level=logging.INFO, format=FORMAT) # 用户名 , 密码 (明文) hdu = SubmitHDdu("laoli2009", "123456") if hdu.login(): logging.info("login success!") # hdu.submit("1000", "Cpp", SubmitCode.cppCode) hdu.submit("1000", "Java" , SubmitCode.javaCode) logging.info("submit success!") time.sleep(60) hdu.status() logging.info("search status success!")
相关文章推荐
- Python3 BeautifulSoup爬虫 POJ自动提交
- python爬虫自动提交HDU并获取AC状态(p3+request+Beatifulsoup)
- Python3 BeautifulSoup爬虫 ZOJ自动提交
- Python BeautifulSoup爬虫 HDU题目
- Python爬虫之HDU提交数据
- [python] HDU自动登录提交代码程序
- python爬虫(二):向网页提交数据
- python利用beautifulSoup实现爬虫
- Python 的 MySQLdb 模块插入数据没有成功与 autocommit(自动提交)的关系
- Python爬虫——人人好友相册自动下载(一)
- python编写的自动获取代理IP列表的爬虫-chinaboywg-ChinaUnix博客
- python爬虫自动搜索下载游民今日搞笑图集
- python利用beautifulSoup实现爬虫
- svn 文件批量删除自动提交脚本(python)
- beautifulsoup,python3中的爬虫匹配神器
- 花生壳动态IP域名解析之python自动提交公网IP
- python带cookie提交表单自动登录
- python利用beautifulSoup写爬虫
- python 自动提交和抓取网页
- Python 网页爬虫-BeautifulSoup库的学习