爬虫爬出来的数据是空的_7毛钱!暴跌数月!Pandas还能写爬虫?

土豆跌至白菜价!

民以食为天,不知道大家注意到没有,近期土豆价格连续数月暴跌,有数据为证。

下面使用Pandas爬取“北京新发地市场”2020年1月至9月的土豆数据并进行分析,效果如图1和图2所示。

82a378cbf8d382f676f7af593004f6f8.png
图1 爬取后的数据

51da2b21752a963a9b5caa93cb0fbdd8.png
图2 土豆价格变化趋势分析图表

具体实现步骤如下:

下面使用Pandas的read_html()方法爬取数据。该方法用于导入带有table标签的网页表格数据,语法如下:

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

常用参数说明:

  • io:字符串,文件路径,也可以是URL链接。网址不接受https,可以尝试去掉https中的s后爬取,如http://www.mingribook.com。
  • match:正则表达式,返回与正则表达式匹配的表格。
  • flavor:解析器默认为“lxml”。
  • header:指定列标题所在的行,列表list为多重索引。
  • index_col:指定行标题对应的列,列表list为多重索引。
  • encoding:字符串,默认为None,文件的编码格式。
  • 返回值:返回一个DataFrame。

使用read_html()方法前,首先要确定网页表格是否为table类型。右键单击该网页中的表格,在弹出的菜单中选择“检查元素”,查看代码中是否含有表格标签<table>…</table>的字样,如图3所示,确定后才可以使用read_html()方法。

f9af7d4030dd12e73b43ff61736b6a31.png
图3 检查元素

完整程序代码如下:

import pandas as pd
import matplotlib.pyplot as plt
# 创建空的DataFrame对象
df = pd.DataFrame()
# 创建空列表
url_list=[]
# 遍历网页的所有页
for i in range(1, 19):
 url = 'http://www.xinfadi.com.cn/marketanalysis/0/list/'+str(i)+'.shtml?prodname=%E5%9C%9F%E8%B1%86&begintime=2020-01-01&endtime=2020-09-27'
 url_list.append(url)
# 遍历网页中的table读取网页表格数据
for url in url_list:
 df= df.append(pd.read_html(url))
# 数据清洗删除无用数据第0行和第8列
df.drop(index=0,inplace=True) 
df.drop(columns=7,inplace=True)
df.columns=['品名','最低价','平均价','最高价','规格','单位','发布日期']
# 导出Excel数据
df.to_excel('土豆.xlsx',index=False)
# 将平均价转换为浮点类型
df['平均价'] = df['平均价'].astype(float)
df['发布日期']=pd.to_datetime(df['发布日期'])
df1=df.set_index('发布日期')
df_month=df1.resample('M').mean()
# 绘制图表
plt.rcParams['font.sans-serif'] = ['SimHei']
df_month.plot(kind='line',marker='o',color='r',title='土豆价格变化趋势')
plt.show()

以上通过一个简单的例子介绍了数据爬取——数据处理——数据可视化——数据分析的一个过程。

推荐图书

《Python 网络爬虫从入门到实践(全彩版)》一书适用于Python 爬虫入门学习的读者,书中全面介绍了使用Python进行网络爬虫开发的入门必备知识,本书从学习与应用的角度出发,帮助读者快速掌握网络爬虫的各项技能。

4a2e508de5a1133f7fe04c7cbb2cb96b.png

全书共17 章,包括初识网络爬虫、了解Web 前端、多种网络请求模块、网页数据的多种解析方式、爬取动态渲染的信息、多线程与多进程爬虫、数据处理与存储、App 抓包工具、识别验证码、Scrapy 爬虫框架、Scrapy-Redis 分布式爬虫以及可视化爬虫:数据侦探项目。本书侧重爬虫技术的实战应用,包含125 个典型应用示例、2 个实用案例,最后提供了一个综合实战项目,书中所有实例和项目都提供了程序源码,力求为读者打造一本学习入门+ 应用+ 实践一体化的精彩的Python 网络爬虫图书。

原创不易,如果觉得有点用,希望可以随手 点个赞,拜谢各位老铁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值