weixin_47593773 2022-07-31 17:45 采纳率: 0%
浏览 32

仿写了一个爬取网站最新通知的标题和日期的代码,但不知道为什么不显示结果,请求指正

问题遇到的现象和发生背景

仿写了一个爬取网站最新通知的标题和日期的代码,但不知道为什么不显示结果,求指正

问题相关代码,请勿粘贴截图

import requests
from bs4 import BeautifulSoup
import csv

ur="https://edu.nju.edu.cn/_s297/8782/list.psp"
def get_one_page(ur1):
headers= {
'User-Agent': 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
}
try:
info_list_page=[]
resp=requests.get(ur1,headers=headers)
resp.encoding=resp.status_code
page_text=resp.text
soup=BeautifulSoup(page_text,"lxml")
tr_list=soup.select(".news_list > table > tr")
for tr in tr_list:
tds=tr.select("td")
title=tds[0].a.title
date=tds[1].string
info=[date,title]
info_list_page.append(info)
print(info_list_page)
except Exception as e:
print('爬取'+ur1+"错误")
print(e)
return None
else:
resp.close()
print('爬取'+ur1+"成功")
return info_list_page

print(get_one_page(ur))

我想要达到的结果

输出最新通知公告的 日期+标题

  • 写回答

1条回答 默认 最新

  • 青云交 优质创作者: 大数据技术领域 2025-10-13 13:16
    关注

    直接上代码:

    import requests
    from bs4 import BeautifulSoup
    import csv
    
    # 目标URL(注意变量名规范,建议用url)
    url = "https://edu.qingyunjiao.com/_s297/8782/list.psp"   
    
    def get_one_page(url):
        # 1. 正确设置请求头(注意缩进)
        headers = {
            'User-Agent': 'Mozilla/5.0 (Linux; Android 4.1.2; Nexus 7 Build/JZ054K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19'
        }
        
        try:
            info_list_page = []
            # 2. 发送请求并正确设置编码
            resp = requests.get(url, headers=headers)
            resp.encoding = 'utf-8'  # 目标网页是utf-8编码,直接指定
            page_text = resp.text
            
            # 3. 解析页面(检查选择器是否正确)
            soup = BeautifulSoup(page_text, "lxml")
            # 目标网页的结构是:.news_list下的table,tr包含数据行(跳过第一行表头)
            tr_list = soup.select(".news_list > table > tr")
            # 跳过表头行(第一行tr是表头,无数据)
            for tr in tr_list[1:]:  # 从索引1开始遍历数据行
                tds = tr.select("td")
                # 避免tds为空导致索引错误
                if len(tds) < 2:
                    continue
                # 4. 正确提取标题和日期
                # a标签的标题可能在text中,或title属性中(根据网页实际结构)
                title = tds[0].a.text.strip()  # 获取a标签内的文本
                date = tds[1].text.strip()     # 获取日期文本
                info = [date, title]
                info_list_page.append(info)
            
            # 打印当前页爬取的结果
            for item in info_list_page:
                print(f"日期:{item[0]},标题:{item[1]}")
            
            return info_list_page
        
        except Exception as e:
            print(f'爬取{url}错误:{e}')  # 打印具体错误原因
            return None
        
        finally:
            if 'resp' in locals():  # 确保响应关闭
                resp.close()
    
    # 调用函数
    get_one_page(url)
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 7月31日