数据采集第二次作业
1. 作业①:
要求:在中国气象网(http://www.weather.com.cn)给定城市集的7日天气预报,并保存在
数据库。
输出信息:
序号 | 地区 | 日期 | 天气信息 | 温度 |
---|---|---|---|---|
1 | 北京 | 7日(今天) | 晴间多云,北部山区有阵雨或雷阵雨转晴转多云 | 31℃/17℃ |
2 | 北京 | 8日(明天) | 多云转晴,北部地区有分散阵雨或雷阵雨转晴 | 34℃/20℃ |
3 | 北京 | 9日(后台) | 晴转多云 | 36℃/22℃ |
4 | 北京 | 10日(周六) | 阴转阵雨 | 30℃/19℃ |
5 | 北京 | 11日(周日) | 阵雨 | 27℃/18℃ |
6...... |
1)代码部分:
-
- 数据库相关代码如下:
#数据库
class WeatherDB:
def openDB(self):
self.con=sqlite3.connect(r"E:\数据采集作业\作业2#1.db")
self.cursor=self.con.cursor()
try:
self.cursor.execute("create table weathers (wCity varchar(16),wDate varchar(16),wWeather varchar(64),wTemp varchar(32),constraint pk_weather primary key (wCity,wDate))")
except:
self.cursor.execute("delete from weathers")
def closeDB(self):
self.con.commit()
self.con.close()
def insert(self, city, date, weather, temp):
try:
self.cursor.execute("insert into weathers (wCity,wDate,wWeather,wTemp) values (?,?,?,?)",
(city, date, weather, temp))
except Exception as err:
print(err)
def show(self):
self.cursor.execute("select * from weathers")
rows = self.cursor.fetchall()
i=1
print("{:4}\t{:10}\t{:14}\t{:24}\t{:16}".format("序号", "地区", "日期", "天气信息", "温度"))
for row in rows:
print("{:4}\t{:10}\t{:10}\t{:24}\t{:16}".format(i,row[0], row[1], row[2], row[3]))
i+=1
-
- 运行结果:
- 运行结果:
-
- 查看数据库结果:
- 查看数据库结果:
2)心得体会
该作业是复现书上的代码,让我对数据库有了初步的了解与认识,方便我接下来的实验。
2. 作业②
要求:用requests和自选提取信息方法定向爬取股票相关信息,并存储在数据库中。
输出信息:
序号 | 股票代码 | 股票名称 | 最新报价 | 涨跌幅 | 涨跌额 | 成交量 | 成交额 | 振幅 | 最高 | 最低 | 今开 | 昨收 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 688093 | N世华 | 28.47 | 62.22% | 10.92 | 26.13万 | 7.6亿 | 22.34 | 32.0 | 28.08 | 30.2 | 17.55 |
2...... |
* 1)代码部分
进入F12调试模式进行抓包,查找股票列表加载使用的url。经过查找,找到jQuery,如图所示
其url为,其中str(page) 为页数 例如:pn=1 or pn=2 ...
url = "http://12.push2.eastmoney.com/api/qt/clist/get?cb=" \ "jQuery1124022551745103192156_1634088681455&pn=" \ + str(page) + "&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_=1634088681456"
经过分析发现
# 通过观察我们可以发现,股票代码在f12,名称在f14,最新价f2,涨跌幅f3, 涨跌额f4,
# 成交量f5,成交额f6, 振幅f7, 最高f15, 最低f16,今开f17,昨收f18
-
- 运行结果
- 运行结果
-
- 查看数据库结果
- 查看数据库结果
* 2)心得体会
学会了使用抓包工具获取网页数据,加深了对谷歌F12模式的理解与掌握。这次作业是js爬取动态网页,我通过观察URL发现只要控制每页的标识变量pn可以实现翻页
3. 作业③:
要求:爬取中国大学2021主榜(https://www.shanghairanking.cn/rankings/bcur/2021)所
有院校信息,并存储在数据库中,同时将浏览器F12调试分析的过程录制Gif加入至博客中。
输出信息:
排名 | 学校 | 总分 |
---|---|---|
1 | 清华大学 | 969.2 |
1)代码部分
-
- 录制过程如下:
- 录制过程如下:
-
- 运行结果
- 运行结果
-
- 查看数据库结果
- 查看数据库结果
2)心得体会
该作业不再需要翻页处理,利用了re,相对简单