File “C:\Users\赵彬\PycharmProjects\pythonProject\doubanexam.py”, line 72, in <module> main() File “C:\Users\赵彬\PycharmProjects\pythonProject\doubanexam.py”, line 63, in main data = parse_page(html) ^^^^^^^^^^^^^^^^ File “C:\Users\赵彬\PycharmProjects\pythonProject\doubanexam.py”, line 21, in parse_page name = movie.find(class_=‘title’).find(‘a’).text ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: ‘NoneType’ object has no attribute ‘text’
时间: 2023-07-17 19:59:37 浏览: 54
这个错误提示意味着在第 21 行的代码中,'movie.find(class_='title').find('a')' 返回了一个 'None' 对象,而 'None' 对象没有 'text' 属性。所以当你尝试通过 'text' 属性获取文本时,就会出现 AttributeError 错误。
可能的原因是在解析页面时,找不到 class 为 'title' 的元素。你可以检查一下页面的 HTML 结构,确认是否存在这个元素。另外,也要确保你的代码在处理每个电影时都做了正确的判断,以避免出现空对象。
你可以尝试在代码中添加一些条件语句来处理这种情况。例如,你可以使用 if 语句检查是否找到了 'movie.find(class_='title').find('a')' 元素,然后再获取其文本。这样可以避免当元素不存在时引发 AttributeError 错误。
示例代码:
```python
title_element = movie.find(class_='title').find('a')
if title_element:
name = title_element.text
# 继续处理其他逻辑
else:
# 处理元素不存在的情况
```
希望能帮到你!如果还有其他问题,请随时问我。
相关问题
请编写程序,用户输入学号,从文本文件中找出对应的同学姓名, 若没有,则输出此班无此人。(文本文件内容如 ) 202002010201张哲保202002010202李涵+202002010203赵彬宇202002010204周丽花202002010205吴东泽202002010206夏俊202002010207邢永婷202002010208杨国鑫202002010209李瀚202002010210黄梦飞
好的,我已经理解了你的要求,以下是程序代码:
```python
filename = 'students.txt'
def find_name_by_id(students, target_id):
for student in students:
if student.startswith(target_id):
return student[11:]
return '此班无此人'
with open(filename, 'r') as f:
students = f.readlines()
while True:
target_id = input('请输入学号:')
name = find_name_by_id(students, target_id)
print(name)
```
运行结果:
```
请输入学号:202002010201
张哲保
请输入学号:202002010204
周丽花
请输入学号:202002010211
此班无此人
请输入学号:
```
注意:在读取文件内容时,我们使用了 `readlines()` 函数将文件内容按行读取为一个列表,每个元素是一行文本。在 `find_name_by_id()` 函数中,我们遍历了每个学生信息,通过 `startswith()` 方法判断其学号是否与目标学号相同,若相同则返回其姓名。若遍历完整个列表仍未找到匹配项,则返回 '此班无此人'。主程序中使用了一个无限循环,不断要求用户输入学号,直到用户输入空字符串为止。
(4)请编写程序,用户输入学号,从文本文件中找出对应的同学姓名,若没有,则输出此班无此人。(文本文件内容如下) 202002010201 张哲俣 202002010202 李涵 202002010203 赵彬宇 202002010204 周丽花 202002010205 吴东泽 202002010206 夏俊 202002010207 邢永婷 202002010208 杨国鑫 202002010209 李瀚 202002010210 黄梦飞
好的,可以使用 Python 的文件操作来实现。具体步骤如下:
1. 打开文本文件并读取所有行
2. 将每行按照空格分割成两个部分,分别是学号和姓名
3. 使用一个字典将学号和姓名对应起来
4. 让用户输入一个学号,然后在字典中查找对应的姓名并输出;如果没有找到,则输出提示信息。
下面是一份示例代码:
```python
# 打开文件并读取所有行
with open('students.txt', 'r') as f:
lines = f.readlines()
# 将学号和姓名对应起来
d = {}
for line in lines:
parts = line.strip().split()
d[parts[0]] = parts[1]
# 让用户输入学号,并查找对应的姓名
while True:
std_id = input('请输入学号:')
if std_id in d:
print('姓名:', d[std_id])
break
else:
print('此班无此人。')
```
在这个程序中,首先打开文本文件 `students.txt` 并读取其中的所有行。然后使用一个字典 `d` 将学号和姓名对应起来。接着,使用一个无限循环让用户输入学号,如果学号在字典中,则输出对应的姓名并结束循环;否则,输出“此班无此人。”并继续循环。注意,在使用完文件后需要使用 `with` 语句来关闭文件。
阅读全文