首页 技术 正文
技术 2022年11月15日
0 收藏 475 点赞 3,963 浏览 1592 个字

参考链接:https://www.makcyun.top/web_scraping_withpython2.html

#!/usr/bin/env python
# -*- coding: utf-8 -*-from multiprocessing.pool import Poolimport pandas as pd
import requests
from sqlalchemy import create_engine# 数据库相关信息
HOSTNAME = '127.0.0.1'
PORT = ''
DATABASE = 'top500'
USERNAME = 'root'
PASSWORD = 'root'SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{host}:{port}/{db}?charset=utf8mb4".format(
username=USERNAME,
password=PASSWORD,
host=HOSTNAME,
port=PORT,
db=DATABASE)SQLALCHEMY_TRACK_MODIFICATIONS = False
SQLALCHEMT_ENCODING = 'utf8mb4'engine = create_engine(SQLALCHEMY_DATABASE_URI, echo=True)# 获取网页收据
def get_one_page(url):
response = requests.get(url)
if response.status_code == 200:
return response.text
else:
return None# 保存到csv文件
def save_csv(html):
dataframe = pd.read_html(html)
tb = dataframe[0].drop([0]) # 获取网页数据中的第一个表格数据,然后再去掉第一个表格数据中的的第一行(去掉的话csv文件中没有列名,不去掉的话多次写入列名)
# tb.columns = ['rank', 'site', 'system', 'cores', 'rmax', 'rpeak', 'power'] # 重命名列名
tb.to_csv(r'top500.csv', mode='a', encoding='utf_8_sig', index=True, header=False) #def save_mysql(html):
dataframe = pd.read_html(html)
tb = dataframe[0].drop([0])
tb.columns = ['rank', 'site', 'system', 'cores', 'rmax', 'rpeak', 'power']
try:
tb.to_sql('top500', con=engine, if_exists='append', index=False) # 需要事先建好top500数据表,并注意字段名称跟数据列名一一对应,字段值的长度要足够
print('success')
except:
print('fail')def main(offset):
url = 'https://www.top500.org/list/2018/11/?page=' + str(offset)
html = get_one_page(url)
# save_csv(html)
save_mysql(html)if __name__ == '__main__':
pool = Pool()
pool.map(main, [i for i in range(1, 6)])

csv文件效果:

使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

csv文件待优化的地方:加上列名

mysql效果:

使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

问题:

1.不论是csv文件还是mysql表格数据,根据rank字段进行排序,竟然排序的不怎么准确

2.site字段的最后部分数据是国家,这个需要想办法给剥离出来,再弄一列数据展示

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,992
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,506
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844