电报防广告机器人 telegram antispam bot 我的博客最新一期博文的标题是什么 html解析 rss xml解析

上一期中, 我们实现了自定义 问题-答案. 但是过于死板.
那么, 除了算术题, 还有什么可以生成灵活 问题-答案 的方式呢?
比如, 我的博客最新一期博文的标题是什么?

html解析

如果是人, 怎么找到我的博客的最新一期博文呢? 
找到这个位置, 标题就是答案了.

那么, 计算机程序怎么获取这一条呢?
我们 按 F12 打开浏览器开发者工具. 使用选择工具, 选中我们需要的博文标题. 

可以看到在html中, 博文标题对应元素是 class="post-title entry-title"

那么, 我们使用GPT编程.
python实现如下功能,
访问 https://zelikk.blogspot.com/
在 html 中找到 第1个 class="post-title entry-title" 元素, 
输出该元素的文本内容
把GPT编程的结果和原来的 youtube.py 里面的4行代码融合一下, 就得到这样的 blog.py 
放到 pset 目录下就生效了. 
import requests
from bs4 import BeautifulSoup

def buildQA():
  question = '我的博客的最新一期博文标题是什么?'
  correct_answer = ''

  url = "https://zelikk.blogspot.com/"

  # 请求网页
  response = requests.get(url)

  # 解析 HTML
  soup = BeautifulSoup(response.text, "html.parser")

  # 找到第一个 class="post-title entry-title" 的元素
  element = soup.find(class_="post-title entry-title")

  if element:
    correct_answer = element.get_text(strip=True)
  else:
    print("没有找到目标元素")

  return question, correct_answer
需要注意的是, 为了上面的代码能正常运行, 你需要安装对应的python库.
pip3 install requests BeautifulSoup4 --break-system-packages


rss xml解析

有些人的博客是动态生成页面的, 如果你去请求页面, 会得到一个包含js的html, 需要js运行之后(一般是向后端请求数据)才能知道都是些什么博文.
那怎么办呢? 如果博客支持RSS订阅的话, 我们可以请求RSS feed文件进行分析.
以我的博客为例, 打开 https://zelikk.blogspot.com/rss.xml
你可以看到里面列出了最近的几篇博文
还是一样的, 用GPT编程
用 python 实现以下功能
打开 https://zelikk.blogspot.com/rss.xml
获得第1篇博文的标题
得到 rss.py 同样的, 放到 pset 目录下就行了.
import requests
import xml.etree.ElementTree as ET

def buildQA():
  question = '我的博客的最新一期博文标题是什么?'
  correct_answer = ''

  url = "https://zelikk.blogspot.com/rss.xml"

  # 请求 RSS 数据
  response = requests.get(url)

  # 解析 XML
  root = ET.fromstring(response.content)

  # RSS 结构一般是 <rss><channel><item><title>
  first_item_title = root.find(".//channel/item/title")
  
  if first_item_title:
    correct_answer = first_item_title.text.strip()
  else:
    print("没有找到博文标题")

  return question, correct_answer
需要注意的是, 为了上面的代码能正常运行, 你需要安装对应的python库.
pip3 install requests --break-system-packages

项目已更新

Github

评论

The Hot3 in Last 7 Days

隐形眼镜 的 包装 和 直径 对使用的影响

商业化电报关键词提醒机器人 telegram keyword monitor bot

搭建电报关键词提醒机器人 telegram keyword monitor bot