python爬虫初体验(三)——将网页数据导出csv和excel文件

server/2024/10/18 3:50:26/

1. 安装库

pip install requests
pip install pandas
pip install BeautifulSoup
  • requests 是一个非常流行的 Python 第三方库,用于简化 HTTP 请求。它允许你发送 HTTP/1.1 请求极其简单,而无需底层的socket库或urllib库。requests 库使得发起请求、处理响应变得非常容易,并且支持多种类型的HTTP请求(GET, POST, PUT, DELETE等)。

  • pandas主要用于数据分析和数据处理。它提供了大量的数据结构和数据操作功能,使得处理表格数据变得更加容易和高效。是目前比较常用的一款Python包。

  • BeautifulSoup4(通常简称 BeautifulSoup)是一个用于解析HTML和XML文档的Python库。它可以帮助开发者从网页中提取所需的数据,常用于Web爬虫项目、数据挖掘以及其他需要解析HTML或XML文档的场景。

2. 示例代码

python"># -*- coding: utf-8 -*-
import csv
import requests
import pandas as pd
from bs4 import BeautifulSoup# 目标URL
url = 'https://www.shanghairanking.cn/rankings/bcur/2024'
# 请求头,模拟浏览器行为,防止被服务器识别为爬虫
headers = {'Connection': 'keep-alive','Cache-Control': 'no-store, no-cache, must-revalidate','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36','Accept': '*/*','Accept-Encoding': 'gzip, deflate, br, zstd','Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8','Referer': 'https://www.shanghairanking.cn/rankings/bcur/2024',
}
# 创建一个会话对象,保持连接
session = requests.session()# 先访问一次首页,模拟用户行为
session.get('https://www.shanghairanking.cn')# 发送带有headers的GET请求并获取响应内容
resHtml = session.get(url, headers=headers).content.decode('utf-8')# 使用BeautifulSoup解析HTML内容
html_soup = BeautifulSoup(resHtml, 'html.parser')# 查找表格中的所有行
all_goods_li = html_soup.find('table').find_all('tr')def export_rank_csv():# 打开CSV文件准备写入with open('output.csv', 'wb') as csvfile:# 创建一个csv.writer对象csv_writer = csv.writer(csvfile)for row in all_goods_li:goods_info_list = []rank = row.find('div', class_="ranking")img_link = row.find('img')['src']name = row.find('span', class_='name-cn')tags = row.find('p', class_="tags")if name and img_link:goods_info_list.append(rank.get_text(strip=True).encode('utf-8'))goods_info_list.append(img_link)# 将name添加到列表中,并转换为UTF-8编码goods_info_list.append(name.get_text(strip=True).encode('utf-8'))goods_info_list.append(tags.get_text(strip=True).encode('utf-8'))csv_writer.writerow(goods_info_list)def export_rank_excel():school_info_list = []for row in all_school_li:rank = row.find('div', class_="ranking")img_link = row.find('img')['src']name = row.find('span', class_='name-cn')tags = row.find('p', class_="tags")if name and img_link:school_info_list.append([rank.get_text(strip=True).encode('utf-8'),img_link,name.get_text(strip=True).encode('utf-8'),tags.get_text(strip=True).encode('utf-8')])# 列名first_name = ["排名", "logo", "学校名称", "类型"]# 创建一个 DataFrame,列名为 first_name,数据为 school_info_listrank = pd.DataFrame(school_info_list, columns=first_name)# 将“排名”列转换为整数类型rank["排名"] = rank["排名"].astype(int)# 使用 openpyxl 作为写入引擎,将 DataFrame 写入 Excel 文件# 注意:这里使用了默认的 UTF-8 编码,通常不需要显式指定编码rank.to_excel(u"2024中国大学排名.xlsx", index=False)if __name__ == '__main__':# 导出csv文件export_rank_csv()

3. 注意事项

  • 编码问题:确保使用正确的编码处理非ASCII字符。
  • 虽然在 Python 2 中 encode(‘utf-8’) 有助于处理编码问题,但在将数据写入 Excel 文件时通常不需要显式指定编码。但是如果导出文件为乱码,在文件开头添加 # -*- coding: utf-8 -*- 以确保文件以 UTF-8 编码保存。
  • 依赖库:确保已经安装了 pandas 和 beautifulsoup4 库。
  • 创建 DataFrame:使用 pandas 创建 DataFrame,列名为 first_name,数据为 school_info_list。
  • 转换数据类型:将“排名”列的数据类型转换为整数。
  • 导出到 Excel 文件:使用 to_excel 方法将 DataFrame 导出到 Excel 文件,index=False 表示不导出索引列。

http://www.ppmy.cn/server/125286.html

相关文章

抽奖拼团卷轴模式系统开发小程序源代码解析

在当今的互联网商业环境中,抽奖、拼团与卷轴模式等创新玩法被广泛应用于小程序开发中,旨在通过多样化的互动方式吸引用户参与,提升用户粘性和平台活跃度。本文将围绕“抽奖拼团卷轴模式系统开发小程序源代码”这一主题,探讨其技术…

Milvus - 比特集机制及其应用场景详解

在向量数据库 Milvus 中,比特集(Bitset)是一种强大且高效的机制,能够帮助实现属性过滤、数据删除以及时间旅行查询等功能。本文将详细介绍比特集的概念、其在 Milvus 中的应用,以及其主要应用场景,并通过多…

Java研学-BootStrapTable插件

一 列表展示 官方Bootstrap Table参考文档 1 Bootstrap Table相关的CSS和JS文件 <!-- bootstrap-table 表格插件 --> <link href"/js/bootstrap-table/bootstrap-table.min.css?v20210202" rel"stylesheet"/> <script src"/js/boo…

执行力怎么培养?

执行力怎么培养&#xff1f; 并行&#xff1a;适合在初期养成习惯&#xff0c;不抱对结果的期望天才就是强迫症&#xff1a;适合中期修身&#xff1a;适合高级 并行&#xff1a;适合在初期养成习惯&#xff0c;不抱对结果的期望 在你开始做任何事情的时候&#xff0c;不要一开…

【30天玩转python】Web开发(Flask/Django)

Web开发&#xff08;Flask/Django&#xff09; Python 在 Web 开发领域非常流行&#xff0c;拥有多个强大的 Web 框架&#xff0c;其中最受欢迎的两个是 Flask 和 Django。本篇文章将介绍 Flask 和 Django 的基本功能、区别&#xff0c;以及如何使用它们来快速构建 Web 应用。…

WITS核心价值观【创新】篇|系统进化论 解锁新纪元

「客尊」、「诚信」、「创新」 与「卓越」 是纬创软件的核心价值观。我们秉持诚信态度&#xff0c;致力于成为客户长期且值得信赖的合作伙伴。持续提升服务厚度&#xff0c;透过数字创新实践多市场的跨境交付&#xff0c;助客户保持市场领先地位。以追求卓越的不懈精神&#xf…

虚谷中使用PL/SQL改变模式下所有表的大小写

一、将表名转换为小写 1、原理和思路 首先&#xff0c;我们需要查询出指定模式下的所有表名&#xff0c;在xugu中&#xff0c;数据字典dba_tables包含了当前库下的所有表信息&#xff0c;我们可以使用游标&#xff08;CURSOR&#xff09;来遍历这些表名。 2、代码示例如下&am…

在线点餐新体验:Spring Boot 点餐系统

摘 要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于网上点餐系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了网上点餐系统&#xff0c;它彻底改变了过去传统的…