利用Pandas进行高效网络数据获取

利用Pandas进行高效网络数据获取

背景:

​ 最近看到一篇关于使用Pandas模块进行爬虫的文章,觉得很有趣,这里为大家详细说明。

基础铺垫:

pd.read_html pandas 库中的一个函数,用于从 HTML 页面中读取表格数据并返回一个包含 DataFrame 对象的列表。那么说明是表格数据呢,就是table标签的,如下图!

​ 我们可以使用XPath快速判断当前页面是否具有使用Pandas进行爬虫的前提条件。

在这里插入图片描述

pd.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: 接受的输入数据,可以是一个 HTML 字符串、一个 URL、一个文件路径或一个文件对象。
  • match (可选): 一个正则表达式,用于匹配要提取的表格的 HTML 属性。
  • flavor (可选): 解析器的名称,例如 'html5lib''lxml''html.parser' 等。
  • 其他参数:例如 headerindex_colskiprows 等参数用于控制读取表格数据的方式和格式。

案例实战:

pd.read_html 函数会尝试从输入数据中提取所有的表格,并返回一个包含 DataFrame 对象的列表,就是一个列表里存在多个dataframe类型,每个 DataFrame 对象对应一个表格。

import pandas as pd

# 从 HTML 页面中读取表格数据
url = 'https://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/profit/index.phtml?p=1'
tables = pd.read_html(url)

print(tables,type(tables),len(tables))
# 选择第一个表格的 DataFrame 对象
df = tables[0]
# 打印 DataFrame
print('---------------------------------------')
print(df,type(df))

在这里插入图片描述

在这里插入图片描述

​ 那么如果爬取多页呢? 写个for循环,然后使用concat拼接起来,不会拼接的看一下我不久前写的博客。

import pandas as pd

data_list = []
for i in range(1, 6):
    url = f'https://vip.stock.finance.sina.com.cn/q/go.php/vFinanceAnalyze/kind/profit/index.phtml?p={
     i}'
    data = pd.read_html(url)[0] # 这里注意提取 返回的是一个列表
    data_list.append(data) # 每一个data都是一个dataframe类型

print("个数为",len(data_list))
# 合并数据
df = pd.concat(data_list,ignore_index=True)
print(df.head())
# 保存到本地 
df.to_csv("profit.csv",index=False)

看一下结果:

在这里插入图片描述

在这里插入图片描述

细节问题:

这里还要注意一个问题,有的时候还要设置一下编码,可能爬下来的是乱码,如下:

在这里插入图片描述

设置一下编码方式即可。

df = pd.read_html(url,encoding='utf-8')[0]
print(df.head())

如果大家想深层了解为什么有的时候需要设置,有的时候不需要设置,你要需要看这个响应回来的编码格式。

在这里插入图片描述

在这里插入图片描述

温馨提示:

​ 本文提供的内容仅供学习和研究目的,请在合法和道德的框架内使用所获取的知识和技巧。在进行网络爬虫活动时,请遵守相关法律法规,并尊重网站的使用条款和隐私政策。确保在进行任何爬取操作之前获得合适的授权,并确保不会给目标网站或他人造成不必要的干扰或损害。

相关推荐

  1. 利用pandas进行数据行转列和列转行

    2023-12-30 04:08:04       15 阅读
  2. 利用Pandas进行数据清洗与过滤:Python实战指南

    2023-12-30 04:08:04       9 阅读
  3. Pandas进行数据分析

    2023-12-30 04:08:04       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 04:08:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 04:08:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 04:08:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 04:08:04       18 阅读

热门阅读

  1. (二)linux使用docker容器运行mysql

    2023-12-30 04:08:04       47 阅读
  2. StarRocks:快速查询的秘密解析

    2023-12-30 04:08:04       32 阅读
  3. 【Leetcode Sheet】Weekly Practice 21

    2023-12-30 04:08:04       30 阅读
  4. GO基础进阶篇 (六)、I/O流

    2023-12-30 04:08:04       33 阅读
  5. PAT 乙级 1037 在霍格沃茨找零钱

    2023-12-30 04:08:04       36 阅读
  6. GPT技术:人工智能的语言革命

    2023-12-30 04:08:04       39 阅读
  7. idea 如何开启mybatis控制台SQL日志打印

    2023-12-30 04:08:04       44 阅读
  8. C++ 多态详解(14)

    2023-12-30 04:08:04       48 阅读
  9. Bun 安装

    2023-12-30 04:08:04       53 阅读
  10. 鸿蒙Harmony(十)动画

    2023-12-30 04:08:04       33 阅读
  11. 编程笔记 html5&css&js 002 一些基本概念

    2023-12-30 04:08:04       30 阅读
  12. 送你一台云电脑

    2023-12-30 04:08:04       36 阅读