- 浏览: 790062 次
- 性别:
- 来自: 西安
文章分类
最新评论
-
mushme:
W.sl 写道大神:http://mushme.iteye.c ...
用python自动登录iteye -
W.sl:
大神:http://mushme.iteye.com/logi ...
用python自动登录iteye -
mushme:
jilong-liang 写道 public static v ...
选择一个好的驾校,用数据说话,我用python -
jilong-liang:
package sm;import java.net.URL; ...
选择一个好的驾校,用数据说话,我用python -
sunshine_bean:
非常感谢
jsvc将tomcat配置成服务
在交管局网站上,看到每月的考试信息都有工具。
想想,可以汇总下,按照考试人数排个名(群众的选择大部分时候都是有道理的)
1.数据先抓取下来
2.把数据导出到excel里
3.在excel里做个透视图,按月汇总并排序下,得到结果如下
西安西高驾校科二考场 1870 1241 1158 1095 5364
北所科目一考场 1593 1227 1088 863 4771
郊县分所蓝田县科三考试场 3887 210 343 256 4696
郊县长安科目一考场 2332 1844 15 282 4473
西安支队尚稷路科三考场 2263 764 834 567 4428
西安科目三咸阳吉祥考场 868 928 766 1488 4050
东所科目一考场 2664 300 230 159 3353
西安小型车科目三铜川考场 1424 574 557 588 3143
西安支队户县科目三考场 2107 186 343 338 2974
南所科目一考场 1397 473 511 433 2814
西安天平驾校科二考场 1457 456 890 2803
西安博安驾校科目二考场 842 313 935 417 2507
西安华津驾校科二考场 1494 120 422 291 2327
西所科目一考场 1560 262 193 208 2223
郊县阎良科目一考场 1708 226 1934
西安小型车科目三咸阳西郊考场 5 186 544 783 1518
郊县户县科目一考场 1188 247 21 33 1489
public static void trustEveryone() {
这个方法的作用是什么?
想想,可以汇总下,按照考试人数排个名(群众的选择大部分时候都是有道理的)
1.数据先抓取下来
#encoding=utf8 import urllib import urllib.request import http.cookiejar from bs4 import BeautifulSoup # 导入SQLite驱动: import sqlite3 User_Agent = 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0' header = {} header['User-Agent'] = User_Agent vyear='201601' urlFile = urllib.request.urlopen('https://sn.122.gov.cn/publicitypage?size=20&fzjg=%E9%99%95A&page=1&tjyf='+vyear) data = urlFile.read() urlFile.close() data = data.decode('utf-8',errors='ignore') print("get page success") pre = "<div id='pagination'><span class=''>共" index1 = data.find(pre) + len(pre) index2 = data.find('条记录', index1) ebi=data[index1 : index2]; print("总条数:"+ebi) totalPage=""; if (int(data[index1 : index2]))%20>0: totalPage=str(int(int(data[index1 : index2])/20+1)) else: totalPage=str(int(int(data[index1 : index2])/20)) print("totalpage:"+totalPage); def getList(pageId): hosturl = 'https://sn.122.gov.cn/publicitypage?size=20&fzjg=%E9%99%95A&tjyf='+vyear+'&page='+pageId print("getcontent:"+hosturl); request = urllib.request.Request(hosturl, None, header) response = urllib.request.urlopen(request) htmldata = response.read() soup = BeautifulSoup(htmldata,"html.parser") trs = soup.findAll('tr') for x in range(1,len(trs)): tr = trs[x] tds = tr.findAll("td") savejiaxiao(tds[0].contents[0],tds[1].contents[0],tds[2].contents[0],tds[3].contents[0],tds[4].contents[0],tds[5].contents[0]); def savejiaxiao(t_date, t_name,t1,t2,t3,t4): conn = sqlite3.connect('jiaxiao.db') cursor = conn.cursor() # 执行一条SQL语句,创建user表: cursor.execute('create table IF NOT EXISTS kaoshi (id INTEGER PRIMARY KEY, t_date varchar(100),t_name varchar(100),t1 varchar(100),t2 varchar(100),t3 varchar(100),t4 varchar(100) )') cursor.execute('select * from kaoshi where t_date=\''+t_date+'\' and t_name=\''+t_name+'\' and t1=\''+t1+'\' and t2=\''+t2+'\' and t3=\''+t3+'\' and t4=\''+t4+'\' ') values=cursor.fetchall() if len(values) > 0:#以前就存在 print('已经存在:'+t_date+','+t_name) else: try: cursor.execute('insert into kaoshi (t_date, t_name,t1,t2,t3,t4) values(?,?,?,?,?,?)',(t_date,t_name,t1,t2,t3,t4)) print("save success."+t_date+','+t_name) except Exception as e: print('except:', e) # 关闭Cursor: cursor.close() # 提交事务: conn.commit() # 关闭Connection: conn.close() for x in range(1,int(totalPage)+1): #代表从1到totalPage+1(不包含totalPage) errorLink=[] try: getList(str(x)) except Exception as e: print('except:', e) errorLink.append(x) print("errorLink:"+str(errorLink));
2.把数据导出到excel里
# -*- coding:utf-8 -*- import xlwt # 导入SQLite驱动: import sqlite3 def export(): conn = sqlite3.connect('jiaxiao2016.db') cursor = conn.cursor() cursor.execute('select * from kaoshi') values = cursor.fetchall() i=0 book=xlwt.Workbook() sheet1=book.add_sheet('驾校') for line in values: row = sheet1.row(i) row.write(0,line[0])#id row.write(1,line[1])#title row.write(2,line[2])#link row.write(3,line[3]) row.write(4,line[4]) row.write(5,line[5]) row.write(6,line[6]) sheet1.col(1).width = 5000 i=i+1 book.save('驾校2016.xls') cursor.close() conn.commit() conn.close() export()
3.在excel里做个透视图,按月汇总并排序下,得到结果如下
西安西高驾校科二考场 1870 1241 1158 1095 5364
北所科目一考场 1593 1227 1088 863 4771
郊县分所蓝田县科三考试场 3887 210 343 256 4696
郊县长安科目一考场 2332 1844 15 282 4473
西安支队尚稷路科三考场 2263 764 834 567 4428
西安科目三咸阳吉祥考场 868 928 766 1488 4050
东所科目一考场 2664 300 230 159 3353
西安小型车科目三铜川考场 1424 574 557 588 3143
西安支队户县科目三考场 2107 186 343 338 2974
南所科目一考场 1397 473 511 433 2814
西安天平驾校科二考场 1457 456 890 2803
西安博安驾校科目二考场 842 313 935 417 2507
西安华津驾校科二考场 1494 120 422 291 2327
西所科目一考场 1560 262 193 208 2223
郊县阎良科目一考场 1708 226 1934
西安小型车科目三咸阳西郊考场 5 186 544 783 1518
郊县户县科目一考场 1188 247 21 33 1489
评论
2 楼
mushme
2016-08-11
jilong-liang 写道
public static void trustEveryone() {
这个方法的作用是什么?
1 楼
jilong-liang
2016-07-05
package sm;
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Test {
public static void main(String[] args) throws Exception{
trustEveryone();
for (int i = 1; i <=42; i++) {
String url="https://sn.122.gov.cn/publicitypage?size="+i+"&page=7&tjyf=201601&fzjg=%E9%99%95A&fwdmgl=6003";
Document doc=Jsoup.parse(new URL(url), 3000);
//处理从页面的class=table table-stirped table-hover样式下面的li标签
Elements trs=doc.getElementsByAttributeValue("class", "table table-stirped table-hover").select("tr");
for(Element tr:trs){
String rq = tr.select("td:eq(0)").text();//日期
String kcmc = tr.select("td:eq(1)").text();//考场名称
System.out.println(kcmc);
}
}
}
public static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
} }, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
import java.net.URL;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class Test {
public static void main(String[] args) throws Exception{
trustEveryone();
for (int i = 1; i <=42; i++) {
String url="https://sn.122.gov.cn/publicitypage?size="+i+"&page=7&tjyf=201601&fzjg=%E9%99%95A&fwdmgl=6003";
Document doc=Jsoup.parse(new URL(url), 3000);
//处理从页面的class=table table-stirped table-hover样式下面的li标签
Elements trs=doc.getElementsByAttributeValue("class", "table table-stirped table-hover").select("tr");
for(Element tr:trs){
String rq = tr.select("td:eq(0)").text();//日期
String kcmc = tr.select("td:eq(1)").text();//考场名称
System.out.println(kcmc);
}
}
}
public static void trustEveryone() {
try {
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, new X509TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
} }, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
}
发表评论
-
useragent
2016-10-04 16:01 1918USER_AGENTS = [ "Mo ... -
整理一个python工具类
2016-09-08 16:26 1031mark一个工具类 from urllib.request ... -
scrapy抓取cnblog新闻
2016-09-08 16:00 1909tutorial/items.py:项目的items文件 t ... -
scrapy抓取dmoz内容
2016-09-07 14:18 9301.新建一个项目 scrapy startproject ... -
安装scrapy
2016-09-07 11:03 6461.使用pip安装 pip install Scrapy ... -
获取天气预报的接口
2016-07-05 16:28 997以前的几个天气预报的接口没法用了,新找了两个接口 一个接口启用 ... -
python版wobot
2016-04-19 20:49 632#-*- coding: UTF-8 -*- impor ... -
运用百度语音识别来读文字
2016-04-04 22:09 1201运用百度语音识别来读取你的本地内容 1.把本地文字传递给百度语 ... -
多线程下载cnblog新闻图片
2016-03-31 10:17 809主要处理的问题有: 1.如何防止重复下载 2.网络访问一般较慢 ... -
使用python备份搜狐博客
2016-02-24 15:17 530博客日落西山,已经是 ... -
使用python从360doc上抓取内容
2016-01-27 15:32 2129#人生苦短,我用python 在360doc上查到一篇不错的文 ... -
python连接telnet
2016-01-26 10:39 1995# -*- coding: utf-8 -*- imp ... -
获取可用的代理服务器
2016-01-26 08:27 15101.找到一个可用的代理服务器源 2.验证并找出可用的代理服务器 ... -
每日自动下载bing背景图片做桌面之python
2016-01-08 10:17 3949百度已经烂到没法用了,开始使用bing,发现bing的首页背景 ... -
python数据抓取
2015-12-28 16:28 1113经过折腾,python果然是数据抓取的利器。 火车头类的东西, ... -
用python自动登录iteye
2015-12-24 14:24 893需要beautifulsoup插件,python版本3 # ...
相关推荐
《Python驾校考题项目》是一个综合性的学习资源,旨在帮助初学者或有一定基础的Python开发者实践数据处理和项目部署。这个项目包含以下几个关键知识点: 1. **Python编程基础**:项目使用Python作为主要开发语言,...
python毕业设计、期末大作业基于Django+mysql的驾校综合服务平台系统源码。 软件架构 软件架构说明 安装教程 将项目下载到本地 运行 .sql文件。 运行代码,浏览器查看。 介绍 python毕业设计、期末大作业基于...
本项目是一款基于Python Django框架开发的驾校管理系统源码,共计268个文件,涵盖156个.pyc字节码文件、73个.py源代码文件、16个HTML文件、10个XML文件、3个CSS文件、3个JavaScript文件,以及2个.gitignore和2个IML...
"驾校一点通源码.zip" 是一个包含了驾校一点通网站平台源代码的压缩包文件,主要服务于驾驶培训教育领域。源码是构建软件的基础,它揭示了程序内部的工作原理和结构,对于开发者来说,能够深入理解系统的设计思路,...
总的来说,"基于Python的驾照考试在线系统"是一个涵盖Web开发多个领域的项目,它涵盖了后端开发、前端设计、数据库管理、用户认证、算法设计等多个知识点,对于学生和初学者来说,是一个极好的学习和实践平台。...
山西驾校python期末课设_Expression-evaluator
1. **FOXUSER.DBF**:这可能是一个FoxPro数据库文件,用于存储用户信息或者学习进度数据。在驾校一点通中,可能记录了用户的答题记录、错题集、学习时间等关键数据,以便提供个性化的学习建议。 2. **vfp9r.dll**:...
【驾校一点通】是一款专为驾驶学员...总的来说,"驾校一点通"是一个集学习、练习、模拟考试于一体的驾驶学习工具,通过综合性的学习资源和人性化的功能设计,旨在帮助驾驶学员高效地掌握驾驶知识,顺利通过驾驶考试。
驾校管理系统的需求规格说明书的编写目的,是为了明确驾校管理系统的需求,以便开发团队和实施团队能够更好地理解和实施驾校管理系统。文档约定包括文档的结构、术语定义、缩略语和符号等。预期的读者包括驾校管理...
总的来说,驾校管理系统的源码是一个综合性的学习资源,涵盖了软件开发的多个层面,对于想要提升软件开发技能,特别是业务管理系统设计能力的开发者来说,是一个宝贵的实践案例。通过深入研究这套源码,不仅可以了解...
1. **FOXUSER.DBF**:这是一个数据库文件,通常用于存储用户信息或学习进度等数据。在驾校一点通软件中,它可能保存了用户的练习记录、错题集或者个人设置等信息。 2. **vfp9r.dll**:这是Visual FoxPro 9.0的运行...
驾校计算机综合管理系统介绍.doc
【驾校系统全站源码】是一个专为驾驶培训学校设计的完整网站源代码包,它包含了一套完整的、用于管理驾校日常运营的软件系统。这个源码仅供学习用途,不可用于商业项目,使用者应遵守这一规定,尊重知识产权。在源码...
【标题】:“八一驾校系统 v1.0”是一个基于.NET技术开发的驾校管理系统,主要用于学员的网上报名操作。这个系统可能集成了基础的学员信息管理、报名流程控制以及相关数据统计等功能,旨在提高驾校日常运营效率和...
数据库文件`wkSVdatabase.mdb`是一个Access数据库,其中存储了驾校的所有关键数据,包括教练车信息、教练资料、学员详情等。数据库的设计对于应用程序的运行至关重要,因为它允许快速查询和更新数据,支持高效的排课...
【标题】:“海淀驾校约车软件,绝对好使” 该标题揭示了我们正在讨论的是一款专为海淀驾校设计的约车软件。这款软件的核心功能是帮助学员预约驾驶课程,优化了传统的电话预约或现场排队的方式,提升了服务效率和...
4. MySQL数据库管理系统:MySQL是一个开放源代码的关系型数据库管理系统,常用于存储和管理大型数据,在驾校信息管理系统设计与实现中,MySQL 8.0作为数据库管理系统,用于存储和管理驾校的各类数据。 5. Eclipse ...
微信小程序源码+项目说明(为学员提供学车报名、线上模拟考试、预约练车服务及驾校管理及教练管理)(所有数据皆为虚拟数据).zip 微信小程序源码+项目说明(为学员提供学车报名、线上模拟考试、预约练车服务及驾校...
整个项目共包含660个文件,其中JavaScript文件295个,图片文件(jpg和png)合计188个,Python源文件55个,CSS文件47个,HTML文件18个,XML文件12个,GIF和EOT等格式文件共计21个。该官方网站旨在为国大驾校提供全面...