抓取网页数据php(Python叶庭云微信公众号:谈及pandasread_html)
优采云 发布时间: 2022-01-10 04:14抓取网页数据php(Python叶庭云微信公众号:谈及pandasread_html)
过去的一切都是序幕。真正的顺其自然,不是尽力而为,而是什么都不做。
文章目录一、简介
一般的爬虫套路无非就是发送请求、获取响应、解析网页、提取数据、保存数据的步骤。 requests 库主要用于构造请求,xpath 和正则匹配多用于定位和提取数据。对于一个完整的爬虫来说,代码量可以从几十行到上百行不等。初学者的学习成本相对较高。
说说pandas的read.xxx系列的功能,常用的读取数据的方法有:pd.read_csv()和pd.read_excel(),pd.read_html()很少用到,但是它的作用它非常强大,尤其是当它用于捕获Table数据时,它是一个神器。无需掌握正则表达式或xpath等工具,只需几行代码即可快速抓取网页数据并保存在本地。
二、原理
pandas适合抓取表格数据,先了解一下有表格数据结构的网页,例如:
用Chrome浏览器查看网页的HTML结构,你会发现Table数据有一些共性。一般网页结构如下所示。
...
...
...
...
...
...
...
...
...
网页有以上结构,我们可以尝试使用pandas的pd.read_html()方法直接获取数据。
pd.read_html()的一些主要参数
三、爬虫实例1
爬取2019年成都空气质量数据(12页数据),目标网址:
import pandas as pd
dates = pd.date_range('20190101', '20191201', freq='MS').strftime('%Y%m') # 构造出日期序列 便于之后构造url
for i in range(len(dates)):
df = pd.read_html(f'http://www.tianqihoubao.com/aqi/chengdu-{dates[i]}.html', encoding='gbk', header=0)[0]
if i == 0:
df.to_csv('2019年成都空气质量数据.csv', mode='a+', index=False) # 追加写入
i += 1
else:
df.to_csv('2019年成都空气质量数据.csv', mode='a+', index=False, header=False)
9行代码就搞定了,爬取速度也很快。
查看保存的数据
示例 2
抓取新浪财经基金重仓股数据(25页数据),网址:
import pandas as pd
df = pd.DataFrame()
for i in range(1, 26):
url = f'http://vip.stock.finance.sina.com.cn/q/go.php/vComStockHold/kind/jjzc/index.phtml?p={i}'
df = pd.concat([df, pd.read_html(url)[0].iloc[::,:-1]]) # 合并DataFrame 不要明细那一列
df.to_csv('新浪财经基金重仓股数据.csv', encoding='utf-8', index=False)
6行代码就搞定了,爬取速度也很快。
查看保存的数据:
以后爬一些小数据的时候,只要遇到这种Table数据,可以先试试pd.read_html()方法。
作者:叶婷云 微信公众号:培养Python CSDN:本文仅供交流学习,未经作者许可,禁止转载,更不得用于其他目的,违者必究。如果你觉得文章对你有帮助,让你有所收获,期待你的点赞。如有不足,也可以在评论区指正。