下面是详细讲解 "Python爬取内容存入Excel实例" 的完整实例教程:
教程概述
本教程主要通过 Python 程序爬取“糗事百科”网站的一些段子并存入 Excel 文件中。将涉及到以下几个方面:
- Python 爬虫的基础知识
- requests 和 beautifulsoup4 库的使用
- openpyxl 库的使用,即 Python 操作 Excel 文件
实现步骤
以下是实现步骤的详细说明:
- 导入需要使用的库
首先需要导入 python 中和爬虫及 Excel 文件相关的库:requests、beautifulsoup4 和 openpyxl。
import requests
from bs4 import BeautifulSoup
import openpyxl
- 请求目标网站并解析HTML内容
使用 requests 发送请求,获取网站的 HTML 内容。然后,使用 BeautifulSoup 对 HTML 内容进行解析。
url = 'https://www.qiushibaike.com/hot/'
req = requests.get(url)
soup = BeautifulSoup(req.text, 'html.parser')
- 从 HTML 内容中获取需要的信息
使用 BeautifulSoup 的 select 方法,从 HTML 内容中获取需要的信息,比如段子的作者、内容和点赞数。
rows = []
for item in soup.select('.article'):
author = item.select('.author h2')[0].string.strip()
content = item.select('.content span')[0].get_text(strip=True)
vote = item.select('.stats-vote i')[0].string.strip()
row = [author, content, vote]
rows.append(row)
- 将获取到的信息存入 Excel 文件
使用 openpyxl 创建 Excel 文件,并将获取到的信息存入其中。
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append(['作者', '内容', '点赞数'])
for row in rows:
sheet.append(row)
workbook.save('qiushibaike.xlsx')
示例说明
假设现在想爬取糗事百科网站中“热门”页面的一些段子,并将这些段子信息保存入一个 Excel 文件中。则只需要按照上述步骤进行编写代码,将 URL 修改为目标网站的 URL,并在步骤 3 中根据实际情况修改所需要获取的信息,即可完成任务。这里,我提供两条示例:
示例1:爬取新浪财经新闻
假设现在需要爬取新浪财经网站上的实时新闻,将这些新闻的标题和发布时间保存在一个 Excel 文件中。则只需按照以下步骤进行:
- 在网站中找到新闻的标题和发布时间在 HTML 页面中的具体位置,并使用 BeautifulSoup 中的 select 方法获取到这些内容。
- 使用 openpyxl 创建 Excel 文件,并将获取到的新闻信息保存至其中。
# 导入相关库
import requests
from bs4 import BeautifulSoup
import openpyxl
# 发送请求,获取 HTML 内容,并对内容进行解析
url = 'http://finance.sina.com.cn/'
req = requests.get(url)
soup = BeautifulSoup(req.text, 'html.parser')
# 从 HTML 内容中获取需要的信息
rows = []
for item in soup.select('.list01 li'):
title = item.select('.listContent a')[0].string.strip()
date = item.select('.time')[0] .string.strip()
row = [title, date]
rows.append(row)
# 使用 openpyxl 创建 Excel 文件,并将信息写入其中
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append(['标题', '发布时间'])
for row in rows:
sheet.append(row)
workbook.save('sina_finance.xlsx')
示例2:爬取微信公众号文章
假设现在需要爬取某个微信公众号的所有文章,将文章的标题、发布时间及阅读量分别保存在 Excel 文件中。操作步骤如下:
- 打开目标微信公众号,运行 Chrome 浏览器进行XHR调试。找到接口的 URL、Headers、Method、Params 等信息。
- 使用 requests 向微信公众号服务器发出网络请求,获取 JSON 数据。
- 使用 openpyxl 创建 Excel 文件,并将获取到的文章信息保存至其中。
# 导入相关库
import requests
import json
from datetime import datetime
import openpyxl
# 发送请求,获取 JSON 数据
num = 10
offset = 0
url = f'https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzI3NTQ5OTEyNw==&f=json&offset={offset}&count={num}&uin=777&key=777&pass_ticket=777&wxtoken=&appmsg_token=&x5=0&f=json'
headers = {
'Host': 'mp.weixin.qq.com',
'Referer': 'https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzI3NTQ5OTEyNw==&scene=124&devicetype=iOS11.0.3&version=16060125&lang=zh_CN&nettype=WIFI&a8scene=3&fontScale=100&pass_ticket=777&wx_header=1',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Linux; Android 8.0; Pixel 2 Build/OPD3.170816.012) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Mobile Safari/537.36'
}
req = requests.get(url, headers=headers)
data = json.loads(req.text)
# 从 JSON 数据中获取需要的信息
rows = []
for item in data['general_msg_list']['list']:
title = item['app_msg_ext_info']['title']
date = datetime.fromtimestamp(item['comm_msg_info']['datetime']).strftime('%Y-%m-%d %H:%M:%S')
read_num = item['app_msg_ext_info']['read_num']
row = [title, date, read_num]
rows.append(row)
# 使用 openpyxl 创建 Excel 文件,并将信息写入其中
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet.append(['标题', '发布时间', '阅读量'])
for row in rows:
sheet.append(row)
workbook.save('wechat_article.xlsx')
总结
本文提供的教程,详细介绍了爬取网站并将信息保存在 Excel 文件的实现方法。掌握了这些操作方法,相信大家可以自己开发更加复杂的爬虫应用,实现更多功能和需求。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python爬取内容存入Excel实例 - Python技术站