soup = BeautifulSoup(response.text, 'lxml') content = soup.find('div', class_='content') print(content.text) Traceback (most recent call last): Input In [31] in <cell line: 1> print(content.text) AttributeError: 'NoneType' object has no attribute 'text'
时间: 2024-01-01 20:04:24 浏览: 188
这个错误通常是因为在使用`find`方法时,没有找到符合条件的元素。导致返回的结果是`None`,而`None`对象没有`text`属性。
你可以在使用`find`方法之前先判断一下是否成功找到了元素,避免出现这个错误。例如:
```python
import requests
from bs4 import BeautifulSoup
# 股吧URL
url = 'http://guba.eastmoney.com/'
# 发起请求
response = requests.get(url)
# 解析HTML内容
soup = BeautifulSoup(response.text, 'lxml')
# 获取股吧内容
content = soup.find('div', class_='content')
# 判断是否找到了元素
if content is not None:
# 输出结果
print(content.text)
else:
print("未找到股吧内容")
```
这样,如果没有找到符合条件的元素,就会输出"未找到股吧内容",而不会出现`AttributeError`错误。你可以根据实际情况进行适当的处理。
相关问题
news_list = soup.find_all("a", class_="news_list_title") for news in news_list: title = news.get_text() link = news.get("href") news_response = requests.get(link) news_soup = BeautifulSoup(news_response.content, "html.parser") content = news_soup.find("div", class_="news_content").get_text() if "公示" in title: ws.append([title, link, content])
这段代码的作用是爬取一个网页中的新闻列表,然后获取每个新闻的标题、链接和内容,并将包含关键词“公示”的新闻信息写入一个 Excel 表格中。具体来说,代码通过 BeautifulSoup 库解析 HTML 页面,获取 class 属性为"news_list_title"的所有a标签,然后遍历每个a标签,获取其标题和链接,随后请求链接,解析新闻详细页面,获取新闻内容,最后判断标题中是否包含关键词“公示”,如果包含,则将新闻的标题、链接和内容写入一个 Excel 表格中。
优化这段代码import requests from bs4 import BeautifulSoup url = "https://www.gupang.com/202305/64619.html" response = requests.get(url) soup = BeautifulSoup(response.content, "html.parser") title = soup.find("h1", class_="title").text content = soup.find("div", class_="content").text print(title) print(content)
可以使用以下方法进行优化:
1. 添加异常处理,以防止请求失败或解析失败导致程序崩溃:
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.gupang.com/202305/64619.html"
try:
response = requests.get(url)
response.raise_for_status() # 抛出异常,如果请求失败
except requests.exceptions.RequestException as e:
print(e)
sys.exit(1)
soup = BeautifulSoup(response.content, "html.parser")
try:
title = soup.find("h1", class_="title").text
content = soup.find("div", class_="content").text
except AttributeError as e:
print(e)
sys.exit(1)
print(title)
print(content)
```
2. 使用`with`语句来管理资源,以确保在使用完文件或网络连接后自动释放资源:
```python
import requests
from bs4 import BeautifulSoup
url = "https://www.gupang.com/202305/64619.html"
try:
with requests.get(url) as response:
response.raise_for_status()
soup = BeautifulSoup(response.content, "html.parser")
title = soup.find("h1", class_="title").text
content = soup.find("div", class_="content").text
except (requests.exceptions.RequestException, AttributeError) as e:
print(e)
sys.exit(1)
print(title)
print(content)
```
这种方法可以避免手动关闭连接或文件,而且代码更加简洁。
阅读全文