for i in range(1, num_news + 1): url = f'{base_url}index_{i}.htm' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') news_title = soup.select_one('.item .linkto').text news_url = soup.select_one('.item .linkto')['href'] for module in modules: news_data = get_news_data(module, num_news) all_news_data.extend(news_data) AttributeError: 'NoneType' object has no attribute 'text'
时间: 2024-03-07 20:49:40 浏览: 101
这个错误是由于在`news_title = soup.select_one('.item .linkto').text`这一行代码中,`soup.select_one('.item .linkto')`返回了None对象,因此不能访问它的text属性。这可能是由于网页代码中没有符合这个选择器的元素,或者是因为网页请求返回了错误的结果。你可以在这一行代码之前添加一些调试代码来检查`soup.select_one('.item .linkto')`返回的对象是否为None,例如:
```
link = soup.select_one('.item .linkto')
if link is not None:
news_title = link.text
else:
print("No element found for selector '.item .linkto'")
```
这样的话,如果没有找到符合选择器的元素,它将会打印一条消息,告诉你这个问题,并且不会抛出`AttributeError`异常。
相关问题
请使用python爬虫爬取我校官网 职院新闻 的信息标题和新闻发布时间以及新闻来源。请一次性爬取5页的信息,并将其存储进.txt文档当中。(15分) https://www.bvtc.com.cn/dynamic/PageFront.jsp
要爬取BVTC职院新闻的具体信息,你需要使用Python的requests和BeautifulSoup库来获取网页内容,然后解析HTML提取所需的数据。首先,你需要安装这两个库,如果没有安装,可以使用`pip install requests beautifulsoup4`。
下面是一个简化的示例代码,它会爬取指定页面的新闻标题、发布时间和来源,并将结果保存到一个`.txt`文件中。由于学校官网的URL结构可能会有所不同,所以这里的例子仅作为基础框架,可能需要根据实际网站调整。
```python
import requests
from bs4 import BeautifulSoup
import time
# 设置起始URL
base_url = "https://www.bvtc.com.cn/dynamic/PageFront.jsp"
page_count = 5
output_file = "news_data.txt"
# 解析函数
def parse_news(soup):
news_data = []
articles = soup.find_all("div", class_="news-item") # 请根据实际情况替换class名
for article in articles:
title = article.find("h3").text.strip() # 提取标题
date = article.find("span", class_="date").text.strip() # 提取日期
source = article.find("a", class_="source") or "Unknown" # 提取来源,如果找不到默认为未知
news_data.append((title, date, source))
return news_data
# 主函数
def main():
total_data = []
for page_num in range(1, page_count + 1):
url = base_url + f"?page={page_num}"
response = requests.get(url)
if response.status_code != 200:
print(f"Failed to fetch page {page_num}, status code: {response.status_code}")
break
soup = BeautifulSoup(response.text, "html.parser")
news_list = parse_news(soup)
total_data.extend(news_list)
print(f"Scraped page {page_num}, {len(news_list)} items saved.")
time.sleep(2) # 防止过于频繁请求,模拟人类浏览速度
# 将数据写入文本文件
with open(output_file, "w", newline="", encoding="utf-8") as f:
for item in total_data:
f.write("\t".join([str(i) for i in item]) + "\n")
# 执行爬取
if __name__ == "__main__":
main()
阅读全文
相关推荐










