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

#!/usr/bin/env python
# -*- coding: utf-8 -*- from multiprocessing.pool import Pool import 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文件效果:

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

mysql效果:

问题:

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

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

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

  1. JAVA读取CSV文件到MySQL数据库中

    maven项目pom配置: <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifact ...

  2. 记录python爬取猫眼票房排行榜(带stonefont字体网页),保存到text文件,csv文件和MongoDB数据库中

    猫眼票房排行榜页面显示如下: 注意右边的票房数据显示,爬下来的数据是这样显示的: 网页源代码中是这样显示的: 这是因为网页中使用了某种字体的缘故,分析源代码可知: 亲测可行: 代码中获取的是国内票房榜 ...

  3. 使用scrapy爬取的数据保存到CSV文件中,不使用命令

    pipelines.py文件中 import codecs import csv # 保存到CSV文件中 class CsvPipeline(object): def __init__(self): ...

  4. python爬取当当网的书籍信息并保存到csv文件

    python爬取当当网的书籍信息并保存到csv文件 依赖的库: requests #用来获取页面内容 BeautifulSoup #opython3不能安装BeautifulSoup,但可以安装Bea ...

  5. 爬取某网站景区列表并保存为csv文件

    网址:http://www.halehuo.com/jingqu.html 经过查看可以发现,该景区页面没有分页,不停的往下拉,页面会进行刷新显示后面的景区信息 通过使用浏览器调试器,发现该网站使用的 ...

  6. 爬取拉勾网python工程师的岗位信息并生成csv文件

    转载自:https://www.cnblogs.com/sui776265233/p/11146969.html 代码写得很好,但是目前只看得懂前一部分 一.爬取和分析相关依赖包 Python版本: ...

  7. 简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据

    文章目录 一.简介 二.原理 三.爬取实战 实例1 实例2 一.简介 一般的爬虫套路无非是发送请求.获取响应.解析网页.提取数据.保存数据等步骤.构造请求主要用到requests库,定位提取数据用的比 ...

  8. 使用requests、BeautifulSoup、线程池爬取艺龙酒店信息并保存到Excel中

    import requests import time, random, csv from fake_useragent import UserAgent from bs4 import Beauti ...

  9. 使用requests、re、BeautifulSoup、线程池爬取携程酒店信息并保存到Excel中

    import requests import json import re import csv import threadpool import time, random from bs4 impo ...

随机推荐

  1. The superclass &quot;javax.servlet.http.HttpServlet&quot; was not found on the Java Build Path

    完整错误信息: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS"AS IS" AND ANY ...

  2. Linux IPC之共享内存C 事例

    Linux IPC之共享内存 标签: linuxrandomnull工作 2011-08-25 11:52 4123人阅读 评论(0) 收藏 举报  分类: Linux(3)  读书札记(3)  版权 ...

  3. 每日总结-05-19(AC自己主动机结束)

    今天下午讨论了一下校赛的题,最终最终拍板,把校赛的题目定下来了. 然后今天A掉了4个AC自己主动机的题目.最终完毕了AC自己主动机专辑里面的15个题.至此AC自己主动机全然结束. 明天开启线段树专题. ...

  4. ASP.NET快速开发框架不得不做的几个功能、高大上档次后台管理UI界面

    俗话说磨刀不误砍柴工,确实,一早上花一个小时去磨刀一天下来肯定能多砍很多柴.我们做软件开发也是同样的道理,有套好开发框架在手里,开发也是事半功倍.那么一套MVC快速开发框架至少得具有哪些功能才能帮我们 ...

  5. iOS版本、iPhone版本、Xcode版本比对

    iOS版本 iPhone版本 Xcode版本 其他 2003年 Xcode1.0 2005年4月29日 Xcode2.0 2007年1月9日 iPhone OS(iOS1): 虚拟键盘.谷歌地图 第一 ...

  6. 机器人走迷宫(dfs)

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=1590 #include <stdio.h ...

  7. php循环跳出

    PHP中的循环结构大致有for循环,while循环,do{} while 循环以及foreach循环几种,不管哪种循环中,在PHP中跳出循环大致有这么几种方式: 代码: <?php $i = 1 ...

  8. Python 33(2)进程理论

    一:什么是进程         进程指的是一个正在进行 / 运行的程序,进程是用来描述程序执行过程的虚拟概念 进程vs程序 程序:一堆代码 进程:程序的执行的过程 进程的概念起源于操作系统,进程是操作 ...

  9. python 7:del 列表指定元素、list.pop(索引)、list.remove(元素值)(删除列表指定元素,且不可再使用;默认索引-1,弹出指定列表元素,可再使用;移除列表指定第一个元素)

    bicycles = ['trek', 'cannondale', 'redline', 'specialized'] print(bicycles) del bicycles[0] #删除指定列表元 ...

  10. android 可拖动控件 ontouchevent

    首先附上文章的转载内容的链接: 学习android 可拖动事件首先需要对android的屏幕和touchevent参数建立一个详细的知识结构. 1.android坐标系统 一.首先明确一下 andro ...