电报防广告机器人 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 requestsfrom bs4 import BeautifulSoupdef buildQA():question = '我的博客的最新一期博文标题是什么?'correct_answer = ''url = "https://zelikk.blogspot.com/"# 请求网页response = requests.get(url)# 解析 HTMLsoup = 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 requestsimport xml.etree.ElementTree as ETdef buildQA():question = '我的博客的最新一期博文标题是什么?'correct_answer = ''url = "https://zelikk.blogspot.com/rss.xml"# 请求 RSS 数据response = requests.get(url)# 解析 XMLroot = 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
评论
发表评论