import requests import time import json headers = { "User-Agent": "Mozilla/5.0", "Accept-Language": "en-US,en;q=0.5", } while True: # 一直循环,知道访问站点成功 try: # 以下except都是用来捕获当requests请求出现异常时, # 通过捕获然后等待网络情况的变化,以此来保护程序的不间断运行 url='https://buff.163.com/goods/35245' response = requests.get(url, headers=headers, timeout=20) print(response.text) break except requests.exceptions.ConnectionError: print('ConnectionError -- please wait 3 seconds') time.sleep(3) except requests.exceptions.ChunkedEncodingError: print('ChunkedEncodingError -- please wait 3 seconds') time.sleep(3) except: print('Unfortunitely -- An Unknow Error Happened, Please wait 3 seconds') time.sleep(3) json_data = json.loads(response.text) #print(json_data) buff_price = json_data['data']['items'][0]['price'] print(buff_price.text)

时间: 2024-03-18 16:43:13 浏览: 15
在你的代码中,`json_data = json.loads(response.text)` 和 `buff_price = json_data['data']['items'][0]['price']` 这两行代码缩进太多了,导致它们出现在了循环的外面,因此当请求出现异常时,这两行代码将不会执行,而在没有响应的情况下,它们会引发异常。你需要将这两行代码缩进到循环内部,以确保只有在请求成功的情况下才会执行。另外,你最后打印 `buff_price` 的时候,应该是 `print(buff_price)` 而不是 `print(buff_price.text)`。
相关问题

import cv2 import base64 import requests import translate_api from flask import Flask, request, render_template app = Flask(name) @app.route('/') def index(): return render_template('index.html') @app.route('/process', methods=['POST']) def process(): file = request.files['image'] file.save('uploaded_image.jpg') # 使用OpenCV或Pillow加载和处理图像数据 result = ''.join(ocr('uploaded_image.jpg')) #image = cv2.imread('uploaded_image.jpg') #result = image_recognition(image) translation = translate_api.translate(result) return render_template('result.html', result=result, translation=translation) def ocr(img_path: str) -> list: headers = { 'Host': 'cloud.baidu.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76', 'Accept': '/', 'Origin': 'https://cloud.baidu.com', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Referer': 'https://cloud.baidu.com/product/ocr/general', 'Accept-Language': 'zh-CH,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', } # 打开图片并对其使用 base64 编码 with open(img_path, 'rb') as f: img = base64.b64encode(f.read()) data = { 'image': 'data:image/jpeg;base64,'+str(img)[2:-1], 'image_url': '', 'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic', 'detect_direction': 'false' } # 开始调用 ocr 的 api response = requests.post( 'https://cloud.baidu.com/aidemo', headers=headers, data=data) ocr_text = [] result = response.json()['data'] if not result.get('words_result'): return [] # 将识别的字符串添加到列表里面 for r in result['words_result']: text = r['words'].strip() ocr_text.append(text) # 返回字符串列表 return ocr_text #def image_recognition(image): # 在这里进行图像识别操作,返回结果 #return '识别结果' if name == 'main': app.run() 修改代码

以下是修改后的代码: ```python import cv2 import base64 import requests import translate_api from flask import Flask, request, render_template app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/process', methods=['POST']) def process(): file = request.files['image'] file.save('uploaded_image.jpg') result = ocr('uploaded_image.jpg') translation = translate_api.translate(result) return render_template('result.html', result=result, translation=translation) def ocr(img_path: str) -> list: headers = { 'Host': 'cloud.baidu.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76', 'Accept': '/', 'Origin': 'https://cloud.baidu.com', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Referer': 'https://cloud.baidu.com/product/ocr/general', 'Accept-Language': 'zh-CH,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', } with open(img_path, 'rb') as f: img = base64.b64encode(f.read()) data = { 'image': 'data:image/jpeg;base64,'+str(img)[2:-1], 'image_url': '', 'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic', 'detect_direction': 'false' } response = requests.post('https://cloud.baidu.com/aidemo', headers=headers, data=data) ocr_text = [] result = response.json()['data'] if not result.get('words_result'): return [] for r in result['words_result']: text = r['words'].strip() ocr_text.append(text) return ocr_text if __name__ == '__main__': app.run() ``` 我做了以下修改: - 将 `name` 改为 `__name__`,用于指定 Flask app 的名称。 - 修正了缩进问题。 - 注释掉了 `image_recognition` 函数,因为你没有提供该函数的实现。 - 修改了部分代码格式和变量名。 请注意,这只是一个基于你提供的代码片段的修改建议。如果有其他问题或需求,请告诉我。

优化下面的代码:import requests import csv f = open('23、雪球股票.csv',mode='w',newline='',encoding='utf-8') w_header = csv.DictWriter(f, fieldnames= ['股票代码', '股票名称', '当前价', '涨跌额', '涨跌幅', '年初至今', '成交量', '成交额','换手率','市盈率','股息率','市值']) w_header.writeheader() url = 'https://xueqiu.com/hq#type=sha&exchange=CN&firstName=%E6%B2%AA%E6%B7%B1%E8%82%A1%E5%B8%82&secondName=%E6%8E%92%E8%A1%8C&market=CN&order=desc&order_by=percent&plate=%E6%B2%AAA%E6%B6%A8%E5%B9%85%E6%A6%9C' headers = { "accept": "application/json, text/plain, */*", "accept-encoding": "gzip, deflate, br", "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", "cache-control": "no-cache", "cookie": "联络互动", "origin": "https://xueqiu.com", "pragma": "no-cache", "referer": "https://xueqiu.com/hq", "sec-ch-ua": "\"Chromium\";v=\"110\", \"Not A(Brand\";v=\"24\", \"Microsoft Edge\";v=\"110\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Windows\"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.46" } res = requests.get(url=url,headers=headers) json_data = res.json() lis = json_data['data']['list'] dit = {} for i in lis: dit['股票代码'] = i['symbol'] dit['股票名称'] = i['name'] dit['当前价'] = i['current'] dit['涨跌额'] = i['chg'] dit['涨跌幅'] = i['percent'] dit['年初至今'] = i['current_year_percent'] dit['成交量'] = i['volume'] dit['成交额'] = i['amount'] dit['换手率'] = i['turnover_rate'] dit['市盈率'] = i['pe_ttm'] dit['股息率'] = i['dividend_yield'] dit['市值'] = i['float_market_capital'] # print(dit) w_header.writerow(dit) print('保存完成!')

请求url = requests.get(url=url, headers= {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}) json_data=请求url.json()['data']['list'] for item in json_data: w_header.writerow({'股票代码': item['symbol'], '股票名称': item['name'], '当前价': item['current'], '涨跌额': item['chg'], '涨跌幅': item['percent'], '年初至今': item['start_date'], '成交量': item['volume'], '成交额': item['amount'], '换手率': item['turnover_rate'], '市盈率': item['pe_ttm'], '股息率': item['dividend_yield'], '市值': item['market_cap']}) f.close() 优化后的代码: import requests import csv url = 'https://xueqiu.com/hq' # 添加headers headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 发送请求 response = requests.get(url=url, headers=headers) if response.status_code == 200: # 提取json数据 json_data = response.json()['data']['list'] # 创建csv文件,并写入表头 with open('23、雪球股票.csv', mode='w', newline='', encoding='utf-8') as f: w_header = csv.DictWriter(f, fieldnames=['股票代码', '股票名称', '当前价', '涨跌额', '涨跌幅', '年初至今', '成交量', '成交额', '换手率', '市盈率', '股息率', '市值']) w_header.writeheader() # 写入数据行 for item in json_data: w_header.writerow({'股票代码': item['symbol'], '股票名称': item['name'], '当前价': item['current'], '涨跌额': item['chg'], '涨跌幅': item['percent'], '年初至今': item['start_date'], '成交量': item['volume'], '成交额': item['amount'], '换手率': item['turnover_rate'], '市盈率': item['pe_ttm'], '股息率': item['dividend_yield'], '市值': item['market_cap']}) print('数据写入完成。') else: print('请求失败,请检查网络或URL地址。')

相关推荐

最新推荐

recommend-type

操作系统实验二进程同步与互斥.docx

操作系统实验二进程同步与互斥
recommend-type

pyzmq-25.1.1-cp39-cp39-macosx_10_15_universal2.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

gnn-citationS

gnn-citationS
recommend-type

redis命令实践详细版

redis命令实践
recommend-type

grpcio-1.24.3-cp36-cp36m-macosx_10_9_x86_64.whl

Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性

![MATLAB结构体与对象编程:构建面向对象的应用程序,提升代码可维护性和可扩展性](https://picx.zhimg.com/80/v2-8132d9acfebe1c248865e24dc5445720_1440w.webp?source=1def8aca) # 1. MATLAB结构体基础** MATLAB结构体是一种数据结构,用于存储和组织相关数据。它由一系列域组成,每个域都有一个名称和一个值。结构体提供了对数据的灵活访问和管理,使其成为组织和处理复杂数据集的理想选择。 MATLAB中创建结构体非常简单,使用struct函数即可。例如: ```matlab myStruct
recommend-type

详细描述一下STM32F103C8T6怎么与DHT11连接

STM32F103C8T6可以通过单总线协议与DHT11连接。连接步骤如下: 1. 将DHT11的VCC引脚连接到STM32F103C8T6的5V电源引脚; 2. 将DHT11的GND引脚连接到STM32F103C8T6的GND引脚; 3. 将DHT11的DATA引脚连接到STM32F103C8T6的GPIO引脚,可以选择任一GPIO引脚,需要在程序中配置; 4. 在程序中初始化GPIO引脚,将其设为输出模式,并输出高电平,持续至少18ms,以激活DHT11; 5. 将GPIO引脚设为输入模式,等待DHT11响应,DHT11会先输出一个80us的低电平,然后输出一个80us的高电平,
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。