Python基于pandas爬取网页表格数据


Posted in Python onMay 11, 2020

以网页表格为例:https://www.kuaidaili.com/free/

该网站数据存在table标签,直接用requests,需要结合bs4解析正则/xpath/lxml等,没有几行代码是搞不定的。

今天介绍的黑科技是pandas自带爬虫功能,pd.read_html(),只需传人url,一行代码搞定。

原网页结构如下:

Python基于pandas爬取网页表格数据

python代码如下:

import pandas as pd
url='http://www.kuaidaili.com/free/'
df=pd.read_html(url)[0] 
# [0]:表示第一个table,多个table需要指定,如果不指定默认第一个
# 如果没有【0】,输入dataframe格式组成的list
df

输出dataframe格式数据

Python基于pandas爬取网页表格数据

Python基于pandas爬取网页表格数据

再次保存到本地,csv格式,注意中文编码:utf_8_sig

print(type(df))df.to_csv('free ip.csv',mode='a', encoding='utf_8_sig', header=1, index=0)print('done!')

查看csv文件

Python基于pandas爬取网页表格数据

先来了解一下read_html函数的api:

pandas.read_html(io, match='.+', flavor=None, header=None, index_col=None, skiprows=None, attrs=None, parse_dates=False, tupleize_cols=None, thousands=', ', encoding=None, decimal='.', converters=None, na_values=None, keep_default_na=True, displayed_only=True)

常用的参数:

  • io:可以是url、html文本、本地文件等;
  • flavor:解析器;
  • header:标题行;
  • skiprows:跳过的行;
  • attrs:属性,比如 attrs = {'id': 'table'};
  • parse_dates:解析日期

注意:返回的结果是**DataFrame**组成的**list**。

若要dataframe,直接取list【0】

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用redis pool的一种单例实现方式
Apr 16 Python
你应该知道的python列表去重方法
Jan 17 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
基于Python __dict__与dir()的区别详解
Oct 30 Python
Django在win10下的安装并创建工程
Nov 20 Python
python3 面向对象__类的内置属性与方法的实例代码
Nov 09 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python hashlib常见摘要算法详解
Jan 13 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
基于python实现操作redis及消息队列
Aug 27 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 03 Python
Python调用shell命令常用方法(4种)
May 11 #Python
python中sort sorted reverse reversed函数的区别说明
May 11 #Python
python的reverse函数翻转结果为None的问题
May 11 #Python
Pyecharts地图显示不完成问题解决方案
May 11 #Python
将python字符串转化成长表达式的函数eval实例
May 11 #Python
python函数中将变量名转换成字符串实例
May 11 #Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
May 11 #Python
You might like
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
2014/09/06 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
jquery创建一个ajax关键词数据搜索实现思路
2013/02/26 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
关于验证码在IE中不刷新的快速解决方法
2016/09/23 Javascript
nodejs连接mongodb数据库实现增删改查
2016/12/01 NodeJs
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
nodejs开发——express路由与中间件
2017/03/24 NodeJs
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
JointJS流程图的绘制方法
2018/12/03 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
React中阻止事件冒泡的问题详析
2019/04/12 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
vue打开子组件弹窗都刷新功能的实现
2020/09/21 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
Python程序中设置HTTP代理
2016/11/06 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
2018/10/11 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
2018/12/14 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
从多个tfrecord文件中无限读取文件的例子
2020/02/17 Python
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
苹果台湾官网:Apple台湾
2019/01/05 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
社团成立邀请函
2014/01/08 职场文书
关于赌博的检讨书
2014/01/24 职场文书
回复函范文
2015/07/14 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang