Python读取网页表格数据
学会了从网格爬取数据,就可以告别从网站一页一页复制表格数据的时代了。
说个亲身经历的事:
以前我的本科毕业论文是关于“燃放烟花爆竹和空气质量”之间关系的,就要从环保局官网查资料。
一个省10个市,720天的数据,我就傻乎乎地,一页一页复制数据,然后还要手动清理数据。
幸好可以复制,要不然我都可能手抄,你信不信。
当时别说Python,R都不知道,甚至excel都跛脚。
结果,有同学帮老师做个实验,论文都快写好了,我还在处理数据。
也正是因为有了这个经历,促使了我毕业很多年以后,还想把爬取数据这样一件事做好。
同时,也希望能给后面学习的人一点启发。
…………………………………………以上为感慨,下面是正文………………………………………
1 #request网站请求
2 import urllib.request
3 #BeautifulSoup获取网站源代码
4 from bs4 import BeautifulSoup
5 import pandas as pd
6 import csv
7 response=urllib.request.urlopen("https://sthjt.ah.gov.cn/public/column/21691?type=4&action=list&nav=&sub=&catId=32710201")
8 #解析源代码
9 soup = BeautifulSoup(response, "html.parser")
10 links = soup.find("div", {"id": {"xxgk_lmcon"}})
11 ss =links.find_all("a")
12 for a in ss:
13 link = a.get('href')
14 #read_html可以直接获取网站表格
15 tb = pd.read_html(link)[2]
16 #mode='a'追加写入
17 tb.to_csv("C:\\Users\\RK-PC\\Desktop\\Crawldata.csv", mode='a')
为了看的更清楚一点,把我获取数据的网站截图搬上来。
F12找元素
点进去一个链接
看对应的源代码,注意到没有,网站表格基本都是这个结构,tr是表格的行,table row
这里本可以继续用find函数找标签,然后输出
为了使代码简洁一点,采用pandas库的read_html函数,直接读取表格。
最后,把表格写入csv文件,注意要表明,mode=‘a’,不覆盖。
声明:以上操作仅用于学习和研究。
Python读取网页表格数据的更多相关文章
- [转] Windows下使用Python读取Excel表格数据
http://www.python-excel.org/这个网站罗列了很多关于在Python下操作Excel文件的信息,这里选择了其介绍的第一个模块xlrd . xlrd 0.9.2版本跨平台同时支持 ...
- python读取Excel表格文件
python读取Excel表格文件,例如获取这个文件的数据 python读取Excel表格文件,需要如下步骤: 1.安装Excel读取数据的库-----xlrd 直接pip install xlrd安 ...
- Java读取Execl表格数据
在前面提到用java代码新建一个Execl 表格并添加数据到表格中, 这次写了一个读取Execl表格数据并添加导数据库中的案列 给定对方一个Execl模板表格,如果导入的Execl表格和预订的表格不相 ...
- 利用 pandas库读取excel表格数据
利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...
- python读取excel所有数据(cmd界面)
python读取excel所有数据(cmd界面) cmd界面显示excel数据 代码 import xlrd import os from prettytable import PrettyTable ...
- go读取excel表格数据
go读取excel表格数据 使用工具 github.com/Luxurioust/excelize 百度到的都是使用这个 实际上已经改名了 github.com/360EntSecGroup-Skyl ...
- Python读取Excel表格
前言:需要进行自动化办公或者自动化测试的朋友,可以了解下此文,掌握Python读取Excel表格的方法. 一.准备工作: 1.安装Python3.7.0(官网下载安装包) 2.安装Pycharm(官网 ...
- python提取网页表格并保存为csv
0. 1.参考 W3C HTML 表格 表格标签 表格 描述 <table> 定义表格 <caption> 定义表格标题. <th> 定义表格的表头. <tr ...
- Python读取execl表格
读取execl表格 import xlrd Execl = xlrd.open_workbook(r'Z:\Python学习\python26期视频\day76(allure参数.读excel.发邮件 ...
随机推荐
- JFrame显示刷新
1 import java.awt.BorderLayout; 2 import java.awt.Font; 3 import java.awt.event.ActionEvent; 4 impor ...
- 理解Flink中的Task和SUBTASK
1.概念 Task(任务):Task是一个阶段多个功能相同的subTask 的集合,类似于Spark中的TaskSet. subTask(子任务):subTask是Flink中任务最小执行单元,是一个 ...
- Git修改历史commit的author信息
前言 "嘀嗒嘀嗒",抬头看向墙上的钟表,此时已是凌晨1点.小明终于把Go语言圣经第二章的笔记写完,保存commit,提交,然后睡觉. 额,等等,不对,小明发现他用的是公司的git账 ...
- promise链式调用的应用
then在链式调用时,会等前一个then或者函数执行完毕,返回状态,才会执行回调函数. (1)代码顺序执行,第一步调用了函数cook ,cook执行返回了一个promise,promise返回的是成功 ...
- ArrayPool 源码解读之 byte[] 也能池化?
一:背景 1. 讲故事 最近在分析一个 dump 的过程中发现其在 gen2 和 LOH 上有不少size较大的free,仔细看了下,这些free生前大多都是模板引擎生成的html片段的byte[]数 ...
- 用C++实现的增强Eratosthenes筛法程序
运行示例 PS H:\Read\num\x64\Release> .\eSievePro Eratosthenes sieve: a method to find out all primes ...
- vue ele table表格 设置只能勾选一个
table 更改属性设置: <el-table ref="multipleTable" :data="tableData" tooltip-effect= ...
- 人生重开模拟器「GitHub 热点速览 v.21.36」
作者:HelloGitHub-小鱼干 人生是不能重来的,但是 lifeRestart 能满足你的重开心愿.初始值不满意,你可以一直随机生成或者自动添加颜值.智力.运气值,倒是一种"重生&qu ...
- Java创建线程池的方法
Executors创建四种线程池: CachedThreadPool:可缓存的线程池,该线程池中没有核心线程,非核心线程的数量为Integer.max_value,当有需要时创建线程来执行任务,没有需 ...
- 关闭Redis服务
方式1: 方式2: