报错 'NoneType' object has no attribute 'get' 修改代码 def getData(id): url = "https://wzwlsgmh.wenzhou.gov.cn/api/Public/tableinfo" m = MultipartEncoder(fields={"platform_menu_id": id}) header = {'Content-Type': m.content_type} res = requests.post(url, data=m, headers=header) if res.content: res = res.json() else: return []
时间: 2024-04-04 10:35:45 浏览: 115
这个报错同样是因为返回的数据为空,导致无法执行 `get()` 方法。你可以在调用 `res.json()` 方法之前,先判断一下返回的 JSON 数据是否为空,比如:
```python
def getData(id):
url = "https://wzwlsgmh.wenzhou.gov.cn/api/Public/tableinfo"
m = MultipartEncoder(fields={"platform_menu_id": id})
header = {'Content-Type': m.content_type}
res = requests.post(url, data=m, headers=header)
if res.content:
res = res.json()
if res:
return res.get('data', [])
else:
return []
else:
return []
```
这样可以确保在返回的 JSON 数据为空时,不会执行 `res.get()` 方法,从而避免了出现 `'NoneType' object has no attribute 'get'` 这个错误。
相关问题
报错'NoneType' object has no attribute 'upper' 修改def getData(id): url = "https://wzwlsgmh.wenzhou.gov.cn/api/Public/tableinfo" m = MultipartEncoder(fields={"platform_menu_id": id}) header = {'Content-Type': m.content_type} res = requests.post(url, data=m, headers=header) res.raise_for_status() res = res.json() if res is None: return [] else: return res.get('data', [])
这个报错通常是因为返回的数据为空,导致无法执行 `upper()` 方法。为了避免这种情况,你可以在调用 `res.json()` 方法之前,先判断一下返回的 `response` 是否为空,比如:
```python
res = requests.post(url, data=m, headers=header)
if res.content:
res = res.json()
# rest of your code
else:
return []
```
这样可以确保在返回的数据为空时,不会执行 `res.json()` 方法,从而避免了出现 `'NoneType' object has no attribute 'upper'` 这个错误。
import requests from bs4 import BeautifulSoup from openpyxl import Workbook url = 'http://124.95.133.164/work/xjlp/new_building.jsp' response = requests.get(url) soup = BeautifulSoup(response.content, 'html.parser') table = soup.select_one('table.table') rows = table.select('tr') workbook = Workbook() sheet = workbook.active for row in rows: cells = row.select('td') if len(cells) > 0: values = [cell.text.strip() for cell in cells] sheet.append(values) workbook.save('data.xlsx')workbook = Workbook() sheet = workbook.active for row in rows: cells = row.select('td') if len(cells) > 0: values = [cell.text.strip() for cell in cells] sheet.append(values) workbook.save('data.xlsx')这段代码报错NoneType' object has no attribute 'select'怎么改
根据你提供的代码,报错出现在以下这段代码中:
```
table = soup.select_one('table.table')
rows = table.select('tr')
```
这个错误通常出现在soup.select_one()没有找到任何元素时。当无法找到匹配的元素时,select_one()方法返回None,因此当你尝试对其调用select()方法时,就会出现"NoneType' object has no attribute 'select'"的错误。
为了解决这个问题,你需要确保在调用select()方法之前,已经成功地找到了匹配的元素。以下是一种可能的解决方法:
```
table = soup.find('table', {'class': 'table'})
if table:
rows = table.find_all('tr')
# rest of the code
else:
print("Table not found")
```
在这个解决方案中,我们使用了BeautifulSoup的find()方法来寻找class为"table"的table元素。如果找到了这个元素,我们就可以继续使用find_all()方法来找到所有的tr元素。如果没有找到这个元素,我们就可以输出一条错误信息。
你可以根据自己的需求,使用类似的方法来解决这个问题。
阅读全文