参考链接: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. UNIX环境编程学习——反思认识

     学习情况: 有关UNIX系统环境编程的学习时间用来非常长的时间.可是感觉效果还是不是太好,在中间经过了期末考试.用来非常长的时间用来学习专业课.就将该过程的学习放到了一边上,放假以后又回家造成了 ...

  2. 【Java并发编程实战】—– AQS(四):CLH同步队列

    在[Java并发编程实战]-–"J.U.C":CLH队列锁提过,AQS里面的CLH队列是CLH同步锁的一种变形. 其主要从双方面进行了改造:节点的结构与节点等待机制.在结构上引入了 ...

  3. CreateWindowEx和CreateWindow的区别

    CreateWindowEx 函数功能:该函数创建一个具有扩展风格的重叠式窗口.弹出式窗口或子窗口,其他与 CreateWindow函数相同.关于创建窗口和其他参数的内容,请参看CreateWindo ...

  4. Android将图像转换成流存储与将流转换成图像

    1.将图片转换成二进制流 public byte[] getBitmapByte(Bitmap bitmap){ ByteArrayOutputStream out = new ByteArrayOu ...

  5. linux驱动注册汇总

    --- 01)TP file_operations: { 1. static struct file_operations tpd_fops = { // .owner = THIS_MODULE, ...

  6. FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性能相比难说

    摘自:http://www.infoq.com/cn/news/2017/06/freewheel-experience-on-go Go语言是FreeWheel公司目前主要力推的一个方向,在其看来, ...

  7. RMAN异机恢复实验---转载

    一.RMAN异机恢复实验 2011年3月23日00:44 1.环境介绍: 主机1: 操作系统 REDHAT5.5 IP地址 172.16.1.120 主机名 sigle 数据库版本 10.2.0.4 ...

  8. git使用简易指南(转)

    创建新仓库 创建新文件夹,打开,然后执行 git init以创建新的 git 仓库. 检出仓库 执行如下命令以创建一个本地仓库的克隆版本:git clone /path/to/repository 如 ...

  9. 使用 Polyfill 而不再是 bable 来实践js新特性

    现状 我们想要用ES6 语法来写 JavaScript.然而由于我们需要兼容老版本的浏览器,那些浏览器不支持 ES6,我们需要解决这个问题. 有一个标准的做法是:写 ES6 代码 → 将所有代码编译成 ...

  10. SQLyog 快捷方式

    连接Ctrl+M 创建新连接Ctrl+N 以当前连接属性创建新连接Ctrl+F4/Ctrl+W 断开当前连接Ctrl+Tab 切换到下一个连接Ctrl+Shift+Tab 切换到上一个连接Ctrl+1 ...