代码如下:
# author:Administrator
# date:2021/05/30
import openpyxl,os,re
import requests #第三方下载器
from requests import RequestException
from bs4 import BeautifulSoup
#定义list 存入D列 最新净值数据
list_d = []
def getExcel_D(file_url):
excel_text = openpyxl.load_workbook(file_url)
sh = excel_text['Sheet2']
for cases in list(sh.rows)[1:]:
case_id = cases[0].value
case_data = cases[3].value #昨日净值
case_url = cases[4].value
url_head = 'http://fund.eastmoney.com/%s.html?spm=search' %case_url
new_number = getRequestUrl(url_head) #最新净值
list_d.append([case_id,case_data,url_head,str(new_number[0])])
# 关闭工作薄
excel_text.close()
return list_d
def getRequestUrl(url):
try:
response = requests.get(url)
if response.status_code == 200:
html = response.content.decode("utf-8")
soup = BeautifulSoup(html,'lxml')
data = soup.select('#body > div:nth-child(11) > div > div > div.fundDetail-main > div.fundInfoItem > div.dataOfFund > dl.dataItem02 > dd.dataNums > span.ui-font-large.ui-color-green.ui-num')
#print("1",data)
if not data:
data = soup.select('#body > div:nth-child(11) > div > div > div.fundDetail-main > div.fundInfoItem > div.dataOfFund > dl.dataItem02 > dd.dataNums > span.ui-font-large.ui-color-red.ui-num')
pattern = re.compile('<span class="ui-font-large ui-color-red ui-num">(.*?)</span>',re.S)
items = re.findall(pattern,str(data[0]))
#print("2",data)
return items
pattern = re.compile('<span class="ui-font-large ui-color-green ui-num">(.*?)</span>',re.S)
items = re.findall(pattern,str(data[0]))
#print("最新净值",items)
return items
return None
except RequestException:
return None
def main():
BASEDIR = os.path.join(os.path.expanduser("~"),"Desktop")
url = os.path.join(BASEDIR,"个人基金仓位分析表.xlsx")
listd = getExcel_D(url)
excel_text = openpyxl.load_workbook(url)
sheet = excel_text['Sheet2']
# obj[0] = 基金名称
# obj[1] = 基金昨日净值
# obj[2] = 基金url
# obj[3] = 基金最新净值
for num,obj in enumerate(listd,2):
sheet.cell(num,3).value = str(obj[1]) #更新昨日净值
sheet.cell(num,4).value = str(obj[3]) #更新最新净值
excel_text.save(url) #保存
# 关闭工作薄
excel_text.close()
if __name__ == '__main__':
main()
打开文件报错如下:
1.
2.点是之后:
3.修复完成后,正常使用。但我不想让报错。求解决方法!!!! 求路过大神帮帮孩子