报错结果如下:
发生异常: AttributeError
'OpenpyxlWriter' object has no attribute 'save'
File "C:\Users\31088\Desktop\py数据\爬虫\上海和北京的美食.py", line 82, in
writer.save()
AttributeError: 'OpenpyxlWriter' object has no attribute 'save'
# 使用import导入requests模块
import requests
# 使用from...import从bs4模块中导入BeautifulSoup模块
from bs4 import BeautifulSoup
# 使用import导入time模块
import time
# 使用import导入pandas模块,并使用as简写为pd
import pandas as pd
# 将User-Agent以字典键对形式赋值给headers
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"
}
# 使用EXcelWriter()函数打开 /Users/美食排行.xlsx 文档,赋值给writer
writer = pd.ExcelWriter(r"C:\Users\31088\Desktop\py数据\爬虫\美食排行.xlsx")
# TODO 使用for循环遍历10065和10099两个城市的代码
for city in ["10065","10099"]:
# 定义列表title_list用于存储店铺名称
title_list = []
# 定义列表score_list用于存储评分
score_list = []
# 定义列表review_list用于存储点评数据
review_list = []
# 使用for循环和range()函数,遍历1-10
for page in range(1, 11):
# 使用time.sleep()控制,每次循环停顿1秒
time.sleep(1)
# TODO 使用格式化拼接城市编号和页数编号,赋值给url
url = f"http://www.mafengwo.cn/cy/{city}/0-0-0-0-0-{page}.html"
# 使用requests.get()请求内容,获取响应消息,赋值给response
response = requests.get(url, headers=headers)
# 使用.text属性将服务器相应内容转换为字符串形式,赋值给html
html = response.text
# 使用BeautifulSoup()传入变量html和解析器lxml,赋值给soup
soup = BeautifulSoup(html, "lxml")
# 使用find_all()查询soup中class="item clearfix"的节点,赋值给content_all
content_all = soup.find_all(class_="item clearfix")
# for循环遍历content_all
for content in content_all:
# 使用find()查询content中的class="grade"的节点,并赋值给content_grade
content_grade = content.find(class_="grade")
# 使用节点选择器获取下个节点em标签
# 使用.string获取文本内容,赋值给score
score = content_grade.em.string
# 使用append()函数将分数追加到score_list中
score_list.append(score)
# 使用节点选择器获取p节点下的em节点
# 使用.string获取文本内容,赋值给review
review = content_grade.p.em.string
# 使用append()函数将点评数追加到review_list中
review_list.append(review)
# 使用find()查询content中的class="title"的节点
# 获取a节点的.string属性,赋值给title
title = content.find(class_="title").h3.a.string
# 使用append()函数将店铺名称追加到title_list中
title_list.append(title)
# 先将获取的列表信息转换成字典类型,赋值给total
total = {"名称":title_list, "评分":score_list, "点评数量":review_list}
# 将total传入DataFrame()函数,赋值给info
info = pd.DataFrame(total)
# TODO 使用if判断,遍历10065北京的编号时
if city == "10065":
# TODO 使用to_excel将信息写入writer文档中,并设置工作表名称为北京美食
info.to_excel(excel_writer = writer,sheet_name = "北京美食")
else:
# TODO 使用to_excel将信息写入writer文档中,并设置工作表名称为上海美食
info.to_excel(excel_writer = writer,sheet_name = "上海美食")
# 使用save()函数保存文档
writer.save()
这API里好像 https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.ExcelWriter.html 并没有save方法。可以参考 https://ask.csdn.net/questions/7923413 试下