开学的日子越来越捉摸不定了,唉。
今天主要是把北京市政百姓信件分析实战这个作业做了,因为之前一直摸鱼的关系,今天一天做了太多东西(还没做完)。
最首先是爬取数据,我在找到了读取列表的api,所以我几乎把爬取数据、清洗数据、挖掘数据全给跳过了。。(放心,之后我还是要做一遍,因为还有一些功能没完成以及另一个大作业)。
下面是爬取的python程序,希望给看我博客的同学一些启发。
import json import requests import csv, codecs from fake_useragent import UserAgent agent = UserAgent() url = "http://www.beijing.gov.cn/hudong/hdjl/com.web.search.mailList.mailList.biz.ext" requests = requests.Session() data = { "PageCond/begin": 0, "PageCond/length": 100, "PageCond/isCount": 'true' } response = requests.post(url, data, headers={"user-agent": agent.Safari}) result = response.json() csvfile = codecs.open('letter_title.csv', 'w', 'utf_8_sig') writer = csv.writer(csvfile, delimiter=',', quoting=csv.QUOTE_ALL) flag = True if flag: keys = list(result['mailList'][0].keys()) writer.writerow(keys) flag = False while True: response = requests.post(url, data, headers={"user-agent": agent.Safari}) result = response.json() data["PageCond/begin"] += 100 print(result['PageCond']) for line in result['mailList']: writer.writerow(list(line.values())) if result['PageCond']['isLast']: print("结束爬取") break csvfile.close()
通过直接读取北京首都之窗网站的api我直接下载到了所有几乎完全适合我用来做作业的数据,大致如下。
之后就是暂时数据的网站编写。
这次我尝试了Mybatis的mybatis-generator来自动代码生成、自动生成实体,直接就可以连接数据库了。
首先介绍下Mybatis。MyBatis是一个Java持久化框架,它通过XML描述符或注解把对象与存储过程或SQL语句关联起来。这是一个能自动生成SQL语句的映射引擎,能相当得简化数据库方面的工作,毕竟我实在不想对着一个空虚的ResultSet使劲查找然后一个个自己手动一个个装到java实体里面去(或者编一个自动装填工具类,但说实话挺麻烦,而且很憨)。
具体如何使用mybatis-generator可以参考mybatis三剑客之mybatis-generator,但不如官方文档,看官方文档可以少走很多弯路。
这次我使用的是MyBatis3DynamicSql,可以自动生成动态的SQL语句以及一些简单DAO层。
首先是项目结构。
页面设计修改了一个网上的bootstrap4的网页模板。好久没摸bootstrap简直陌生。。
总体就这样了。