BS4 案例分析
实现步骤:
1.了解HTML和网页结构
2.安装和导入相关依赖库
3.发送http请求获取网页内容
4.解析HTML网页内容
5.定位内容和提取数据
6.保存抓取的数据
python">- coding: UTF-8
import os
import timeimport requestsfrom bs4
import BeautifulSoupfrom openpyxl
import Workbook
# 创建Excel文件
# wb = Workbook()
ws = wb.active
# 爬取地址
# url = f'https://www.maigoo.com/news/484526.html'
请求headerheader = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/112.0.0.0 Safari/537.36',
'cookie': '__yjs_duid=1_b1ac9fc87dce4de5552d7cf0924fb4981686228951567; u=b0281776fd75d3eefeb3562b2a5e6534; '
'__bid_n=1889b14047a51b2b754207; '
'FPTOKEN=qU+ieOMqkW6y6DlsOZ+D/T'
'+SCY6yS3dYvGXKibFoGBijKuUuSbc3ACFDzjlcC18wuDjNLENrw4ktAFAqnl3Akg492Lr4fbvNrkdJ'
'/ZQrluIdklkNDAKYnPrpcbe2H9y7AtX+/b+FCTkSTNv5+qB3OtQQ3BXXsEen72oEoAfK+H6' '/u6ltZPdyHttJBJiXEDDS3EiUVt+S2w+8ozXENWbNt/AHeCgNUMmdeDinAKCR+nQSGK/twOoTLOU/nxBeSAazg'
'+wu5K8ooRmW00Bk6XAqC4Cb829XR3UinZHRsJxt7q9biKzYQh'
'+Yu5s6EHypKwpA6RPtVAC1axxbxza0l5LJ5hX8IxJXDaQ6srFoEzQ92jM0rmDynp+gT'
'+3qNfEtB2PjkURvmRghGUn8wOcUUKPOqg==|mfg5DyAulnBuIm/fNO5JCrEm9g5yXrV1etiaV0jqQEw=|10'
'|dcfdbf664758c47995de31b90def5ca5; PHPSESSID=18397defd82b1b3ef009662dc77fe210; '
'Hm_lvt_de3f6fd28ec4ac19170f18e2a8777593=1686322028,1686360205; '
'history=cid%3A2455%2Ccid%3A2476%2Ccid%3A5474%2Ccid%3A5475%2Ccid%3A2814%2Cbid%3A3667; '
'Hm_lpvt_de3f6fd28ec4ac19170f18e2a8777593=1686360427'}
response = requests.get(url, headers=header)
time.sleep(0.01)
# print(response)
# 获取网页信息#
# soup = BeautifulSoup(response.content, 'lxml')
# soup = BeautifulSoup(response.content, 'html.parser')
# print(soup)
# 解析网页数据
# tr_tags = soup.find('div', class_="md_1009 modelbox tcenter").get_text()
# tr_tags = soup.find_all('div', class_="md_1009 modelbox tcenter")
# print(tr_tags)
# # 循环遍历获取tr标签下的td标签文本
# td_tags = soup.select('tr td')for i in range(0, len(td_tags), 2):
school_name = td_tags[i].get_text()
address = td_tags[i + 1].get_text()
# score = td_tags[i + 2].get_text()
time.sleep(0.1)
print(f'正在爬取:--{school_name}--{address}--')
# 将数据项转换为一个元组
row = (school_name, address)
# 将数据行写入 Excel 表格
ws.append(row)#
# 将文件保存到桌面desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")file_path = os.path.join(desktop_path, "重庆市小学爬取.xlsx")wb.save(file_path)print('数据爬取完成!')
补充介绍
**
- openpyxl 是什么?
openpyxl 是一个 Python 库,专门用于读取和写入 Excel 文件(.xlsx 格式)。它提供了强大的功能,可以让你在 Python 程序中轻松操作 Excel 表格,比如创建新的 Excel 文件、读取现有文件的内容、修改单元格数据、添加公式等。
它是处理 Excel 文件的常用工具之一,尤其适合处理复杂的 Excel 数据操作。
- from openpyxl import Workbook 的含义
- from openpyxl:表示从 openpyxl
- import Workbook:表示从 openpyxl 库中导入 Workbook 类。
Workbook 是 openpyxl 库中的一个类,用于表示一个 Excel 工作簿(Workbook)。一个工作簿可以包含多个工作表(Worksheet),类似于你在 Excel 软件中看到的一个 .xlsx 文件。
用途
导入 Workbook 类后,你就可以使用它来创建一个新的 Excel 工作簿,或者加载一个已有的 Excel 文件进行操作。例如:
Python
python">from openpyxl import Workbook
创建一个新的工作簿
python">wb = Workbook()
ws = wb.active # 获取当前激活的工作表
ws['A1'] = "Hello, Excel!" # 在 A1 单元格写入内容
wb.save("example.xlsx") # 保存工作簿到文件
总结
这段代码的作用是从 openpyxl 库中导入 Workbook 类,以便后续可以使用它来操作 Excel 文件。这是使用 openpyxl 库进行 Excel 数据处理的第一步。