name 'link' is not defined
时间: 2023-09-10 16:13:00 浏览: 191
非常抱歉,这是我的失误。在上一个示例中,我没有考虑到找不到符合条件的文章的情况。如果没有找到符合条件的文章,变量 `link` 就没有被定义,会出现这个错误。以下是更正过的代码:
```python
import requests
from bs4 import BeautifulSoup
url = 'http://itc.hzau.edu.cn/index.htm' # 目标网址
response = requests.get(url) # 发送请求并获取响应
response.encoding = response.apparent_encoding # 设置编码格式(防止中文乱码)
html = response.text # 获取网页源代码
soup = BeautifulSoup(html, 'html.parser') # 解析网页源代码
nav_items = soup.select('.nav-item a') # 获取导航栏标签
for nav_item in nav_items:
if nav_item.string == '信息学院': # 找到"信息学院"标签
link = 'http://itc.hzau.edu.cn' + nav_item['href'] # 获取"信息学院"链接
break
response = requests.get(link) # 发送请求并获取响应
response.encoding = response.apparent_encoding # 设置编码格式(防止中文乱码)
html = response.text # 获取网页源代码
soup = BeautifulSoup(html, 'html.parser') # 解析网页源代码
articles = soup.select('.newslist a') # 获取所有文章标题和链接
found = False # 标记是否找到符合条件的文章
for article in articles:
if '计算机科学系' in article.string: # 找到包含"计算机科学系"的文章
title = article.string # 获取文章标题
link = 'http://itc.hzau.edu.cn' + article['href'] # 获取文章链接
print(title, link) # 输出结果
found = True # 标记已经找到符合条件的文章
if not found:
print('没有找到符合条件的文章')
```
解释一下更正的代码:
1. 在找到符合条件的文章后,我们会将变量 `found` 设为 `True`。
2. 在遍历所有文章后,如果没有找到符合条件的文章,变量 `found` 仍为 `False`,此时输出提示信息。
这样就避免了变量 `link` 未定义的情况。
阅读全文