一、前言
今天教大家一个最简单的爬虫程序,只需要几行代码就能爬取多页数据。
这个程序需要用到一个名为pandas的库,先介绍一下pandas:
pandas是基于NumPy构建的,使数据预处理、清洗、分析工作变得更快更简单。pandas是专门为处理表格和混杂数据设计的,数据的处理以及清洗用pandas是很好用的。
今天教大家如何用pandas抓取数据。
pandas适合抓取表格型table数据,所以需要确定网页的结构是否是table数据.
二、案例:爬取中商网股票单页数据
先导入pandas并重命名为pd。
import pandas as pd
创建DataFrame存放数据,DataFrame是pandas里的一种数据结构,可以存放数值、字符串等,与excel表格很像。
df = pd.DataFrame()
今天要爬取内容的网站:
url='https://s.askci.com/stock/a/0-0?reportTime=2020-03-31&pageNum=1#QueryCondition'
三、分析网页来看下网页结构,长的像excel表格,点击下一页url后面的数字会发现变化,下面是今天要爬取的内容:
该网页是静态网页,数据都在网页源代码中,且是table表格数据:
直接用read_html获取网页数据并传入url:
df = pd.concat([df,pd.read_html(url)[3]])
[3]:因为python的数字是从0开始算的,表示是从0开始算到3,也就是获取到第四个表。
以csv格式保存数据,csv以纯文本形式存储表格数据,以逗号等符号分隔,可以转换为表格的一种文件格式:
df.to_csv('A.csv',encoding='utf-8')
运行后预览下数据,包括标题行,一共21条数据:
四、案例:爬取中商网股票多页数据
如果你想爬取多页数据只需要创建个for循环:
import pandas as pd
df = pd.DataFrame()
for i in range(1,208):
url='https://s.askci.com/stock/a/0-0?reportTime=2020-03-31&pageNum='+str(i)+'#QueryCondition'
df = pd.concat([df,pd.read_html(url)[3]])
df.to_csv('A.csv',encoding='utf-8')
运行后一共爬取了207页数据:
预览下数据,包括标题行,一共4127条数据:
五、结语:
pandas爬虫适合爬取且是静态网页的表格型table数据,但有些网页表面看起来是表格型table数据,而源代码却不是的表格型table数据或者数据不在源代码中的,这就要考虑网页是不是动态加载的网页了。
本文分享自 Python与Excel之交 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!