BeautifulSoup find()带连字符属性名使用问题及定时解析需求
解决带连字符属性的BeautifulSoup解析及定时运行问题
核心问题说明
Python关键字参数不允许包含连字符,所以你写的date-time=True会直接报错;另外代码里post["date=time"]是笔误,目标属性应为date-time。
两种可行的解决方法
方法一:用字典传递属性参数
把带连字符的属性放进attrs字典,作为find方法的参数:post = soup.find("div", class_="largeTitle", attrs={"date-time": True}) post_id = post["date-time"]方法二:使用CSS选择器
用select_one方法配合CSS属性选择器,直接识别带连字符的属性:post = soup.select_one("div.largeTitle[date-time]") post_id = post["date-time"]
完整定时运行的修正代码
结合每30分钟运行一次的需求,完整代码如下:
import telebot import requests import time from bs4 import BeautifulSoup URL = "****" def parse_new_content(): page = requests.get(URL) soup = BeautifulSoup(page.content, "html.parser") # 此处可替换为方法二的写法 post = soup.find("div", class_="largeTitle", attrs={"date-time": True}) if post: post_datetime = post["date-time"] # 加入你对比日期、解析新内容的逻辑 print(f"获取到最新日期:{post_datetime}") else: print("未找到目标元素") if __name__ == "__main__": while True: parse_new_content() # 每30分钟执行一次(单位:秒) time.sleep(1800)
内容的提问来源于stack exchange,提问作者FollEnsoo
相关产品推荐
相关产品推荐

