def fetchNews(self): self.sendRequest() self.extractData() def sendRequest(self): response = requests.get(url=self.url, headers=self.headers) response.encoding = 'utf-8' content = response.text with open('qq.json', 'w', encoding='utf-8') as f: f.write(content) def extractData(self): obj = json.load(open('qq.json', 'r', encoding='utf-8')) title = jsonpath.jsonpath(obj, '$..title') title_url = jsonpath.jsonpath(obj, '$..url')加注释
时间: 2024-04-03 13:36:22 浏览: 90
这是一个 Python 类中的三个方法,用于获取新闻数据并提取信息。具体来说,`fetchNews` 方法调用了 `sendRequest` 方法和 `extractData` 方法。`sendRequest` 方法使用 requests 库向指定的 URL 发送 GET 请求,并将响应内容写入 `qq.json` 文件。`extractData` 方法从 `qq.json` 文件中读取响应内容,并使用 jsonpath 库提取出标题和对应的 URL。最终,`title` 和 `title_url` 变量分别存储了新闻标题和对应的链接地址。
相关问题
from common.yaml_utli import read_config_yaml class SendRequest: # 会话,回话对象能够自动管理Cookie关联, session = requests.session() def __int__(self, base, base_url): self.base_url = read_config_yaml(base, base_url) def all_send_request(self, method, url, **kwargs): # 处理基础路径 self.base_url = self.base_url + url #发送请求 res = SendRequest.session.request(method=method, url=self.base_url, **kwargs) return res print(SendRequest("base","base_appsvr_url"))这段代码有什么问题
这段代码有以下问题:
1. `requests` 模块没有被导入,需要添加 `import requests`。
2. `__int__` 方法名应该是 `__init__`,表示初始化对象时调用的方法。
3. `self.base_url` 在 `all_send_request` 方法中被重新赋值,这样会导致基础路径重复拼接。应该在 `__init__` 方法中赋值一次即可。
4. `read_config_yaml` 函数未被定义,需要导入或者补全该函数的定义。
5. 最后一行代码没有调用 `all_send_request` 方法,应该添加方法调用。
修正后的代码应该类似于这样:
```python
import requests
from common.yaml_utli import read_config_yaml
class SendRequest:
# 会话,回话对象能够自动管理Cookie关联,
session = requests.session()
def __init__(self, base, base_url):
self.base_url = read_config_yaml(base, base_url)
def all_send_request(self, method, url, **kwargs):
# 处理基础路径
full_url = self.base_url + url
# 发送请求
res = SendRequest.session.request(method=method, url=full_url, **kwargs)
return res
# 调用示例
sr = SendRequest("base", "base_appsvr_url")
response = sr.all_send_request('get', '/api/v1/users')
print(response.text)
```
def test_GET_status(self): api='/GetInteractStatus' url = ip+api # 接口 datas = {"status":"number"} #传参 log.info('互动当前状态/0:互动初始化中 1:互动初始化完成 2:互动登录中 3:互动登录完成 4:进入房间中 5:进入房间完成 6:退出房间中 7:退出房间完成 ' '8:退出登录中 9:退出互动登录完成 10:登录失败 11:进入房间失败 12:退出房间失败 13:退出互动登录失败 14:获取邀请 15:未知错误') sendRequest().all_send_request(method="get",url=url,params=datas) response = sendRequest().all_send_request(method="get", url=url, params=datas) #判断是否为登录完成 if response == 3: # 继续运行代码 pass else: # 停止运行代码 raise def test_ExitInteractClass(self): api='/ExitInteractClass' url = ip+api # 接口 datas = {"class_id":0} print(datas) log.info('退出互动课堂') sendRequest().all_send_request(method="get",url=url,params=datas) def test_GET_ptz(self): api='/GetInteracPtz' url = ip+api # 接口 datas = {"ptz":"object"} #传参 log.info('互动云台信息') sendRequest().all_send_request(method="get",url=url,params=datas) def test_GET_statuss(self): api='/GetInteractPage' url = ip+api # 接口 datas = {"status":"object"} #传参 log.info('互动导播界面信息') sendRequest().all_send_request(method="get",url=url,params=datas) 当def test_GET_status(self)返回值不为3时,停止所有函数代码
在test_GET_status函数中,当response的值不等于3时,停止所有函数代码可以通过使用raise关键字来实现。raise关键字用于引发一个异常,如果在函数中使用raise语句,则会立即停止函数的执行,并将异常抛出。
修改后的代码如下:
```python
def test_GET_status(self):
api='/GetInteractStatus'
url = ip+api # 接口
datas = {"status":"number"} #传参
log.info('互动当前状态/0:互动初始化中 1:互动初始化完成 2:互动登录中 3:互动登录完成 4:进入房间中 5:进入房间完成 6:退出房间中 7:退出房间完成 '
'8:退出登录中 9:退出互动登录完成 10:登录失败 11:进入房间失败 12:退出房间失败 13:退出互动登录失败 14:获取邀请 15:未知错误')
sendRequest().all_send_request(method="get",url=url,params=datas)
response = sendRequest().all_send_request(method="get", url=url, params=datas) #判断是否为登录完成
if response != 3:
raise Exception("Response is not equal to 3")
# 继续运行代码
pass
def test_ExitInteractClass(self):
api='/ExitInteractClass'
url = ip+api # 接口
datas = {"class_id":0}
print(datas)
log.info('退出互动课堂')
sendRequest().all_send_request(method="get",url=url,params=datas)
def test_GET_ptz(self):
api='/GetInteracPtz'
url = ip+api # 接口
datas = {"ptz":"object"} #传参
log.info('互动云台信息')
sendRequest().all_send_request(method="get",url=url,params=datas)
def test_GET_statuss(self):
api='/GetInteractPage'
url = ip+api # 接口
datas = {"status":"object"} #传参
log.info('互动导播界面信息')
sendRequest().all_send_request(method="get",url=url,params=datas)
```
这样,当test_GET_status函数的返回值不等于3时,会引发一个异常并停止所有函数代码的执行。
阅读全文
相关推荐















