Flexible Question-Answer Generation: HTML and RSS Parsing

In the previous episode, we implemented custom Question-Answer. But it was too rigid.
So, besides arithmetic problems, what other ways can we generate flexible Question-Answer pairs?
For example, what is the title of the latest post on my blog?

HTML Parsing

If you're a human, how would you find the latest post on my blog? 
Find this location, the title is the answer.

So, how does a computer program get this?
We press F12 to open the browser developer tools. Use the selection tool to select the post title we need. 

You can see that in the HTML, the post title corresponds to the element with class="post-title entry-title"

So, we use GPT to program.
Implement the following functionality in Python,
Visit https://zelikk.blogspot.com/
Find the 1st element with class="post-title entry-title" in the HTML, 
Output the text content of this element
Combine the result of GPT programming with the 4 lines of code in the original youtube.py, and you get this blog.py 
Place it in the pset directory and it will take effect. 
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
Note that in order for the above code to run properly, you need to install the corresponding Python libraries.
pip3 install requests BeautifulSoup4 --break-system-packages


RSS XML Parsing

Some people's blogs have dynamically generated pages. If you request the page, you'll get an HTML containing JS, which needs JS to run (usually requesting data from the backend) before you know what posts are there.
So what to do? If the blog supports RSS subscriptions, we can request the RSS feed file for analysis.
Taking my blog as an example, open https://zelikk.blogspot.com/rss.xml
You can see it lists the recent posts
Same as before, use GPT to program
Implement the following functionality in Python
Open https://zelikk.blogspot.com/rss.xml
Get the title of the 1st post
You get rss.py, place it in the pset directory the same way.
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 结构一般是 </div><div>  first_item_title = root.find(".//channel/item/title")</div><div>  if first_item_title:</div><div>    correct_answer = first_item_title.text.strip()</div><div>  else:</div><div>    print("没有找到博文标题")</div><div><br /></div><div>  return question, correct_answer</div><div>Note that in order for the above code to run properly, you need to install the corresponding Python libraries.</div><blockquote>pip3 install requests --break-system-packages</blockquote><div><br /></div><h3 style="text-align: left;">Project Updated</h3><div>Github</div><div><a href="https://github.com/crazypeace/tg-join-group-exam-bot/">https://github.com/crazypeace/tg-join-group-exam-bot/</a></div><div><br /></div><div>========</div><h3 style="text-align: left;">Related Recommendations</h3><div><a href="https://zelikk.blogspot.com/2025/10/telegram-antispam-bot-4.html">《Telegram Anti-Spam Bot telegram antispam bot requires human verification when speaking in groups》</a></div><div><a href="https://zelikk.blogspot.com/2025/10/telegram-antispam-bot-5.html">《Telegram Anti-Spam Bot telegram antispam bot requires human verification when speaking in groups, efficiency optimization, verified user list cached in memory》</a></div><div><a href="https://zelikk.blogspot.com/2025/11/rss-overcast-feedly-newsify-folo.html">《My RSS Software Overcast Feedly Newsify Folo》</a></div><div><br /></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='byline post-timestamp'> <meta content='https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html'/> <a class='timestamp-link' href='https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html' rel='bookmark' title='permanent link'> <time class='published' datetime='2025-10-03T23:08:00-07:00' title='2025-10-03T23:08:00-07:00'> October 03, 2025 </time> </a> </span> </div> <div class='post-footer-line post-footer-line-2'> </div> </div> </div> </div> <section class='comments embed' data-num-comments='0' id='comments'> <a name='comments'></a> <div class='comments-title'>Comments</div> <div id='Blog1_comments-block-wrapper'> </div> <div class='footer'> <div class='comment-form'> <a name='comment-form'></a> <div id='comment-post-message'>Post a Comment</div> <a href='https://www.blogger.com/comment/frame/4362187242651091443?po=7921754285248124471&hl=en&saa=85391&origin=https://icdyct.blogspot.com' id='comment-editor-src'></a> <iframe allowtransparency='allowtransparency' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410px' id='comment-editor' name='comment-editor' src='' width='100%'></iframe> <script src='https://www.blogger.com/static/v1/jsbin/3790099508-comment_from_post_iframe.js' type='text/javascript'></script> <script type='text/javascript'> BLOG_CMT_createIframe('https://www.blogger.com/rpc_relay.html'); </script> </div> </div> </section> </article> </div> </div> </div> <div class='section' id='sidebar_bottom' name='Sidebar (Bottom)'><div class='widget Translate' data-version='2' id='Translate1'> <div class='title'>Translate 翻译</div> <div id='google_translate_element'></div> <script> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'en', autoDisplay: 'true', layout: google.translate.TranslateElement.InlineLayout.VERTICAL }, 'google_translate_element'); } </script> <script src='//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit'></script> </div><div class='widget Subscribe' data-version='2' id='Subscribe1'> <div class='title'>订阅小工具</div> <div class='widget-content'> <div class='subscribe-wrapper subscribe-type-POST'> <div class='subscribe expanded subscribe-type-POST' id='SW_READER_LIST_Subscribe1POST' style='display:none;'> <div class='top'> <span class='inner' onclick='return(_SW_toggleReaderList(event, "Subscribe1POST"));'> <img class='subscribe-dropdown-arrow' src='https://resources.blogblog.com/img/widgets/arrow_dropdown.gif'/> <img align='absmiddle' alt='' border='0' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Posts </span> <div class='feed-reader-links'> <a class='feed-reader-link' href='https://www.netvibes.com/subscribe.php?url=https%3A%2F%2Ficdyct.blogspot.com%2Ffeeds%2Fposts%2Fdefault' target='_blank'> <img src='https://resources.blogblog.com/img/widgets/subscribe-netvibes.png'/> </a> <a class='feed-reader-link' href='https://add.my.yahoo.com/content?url=https%3A%2F%2Ficdyct.blogspot.com%2Ffeeds%2Fposts%2Fdefault' target='_blank'> <img src='https://resources.blogblog.com/img/widgets/subscribe-yahoo.png'/> </a> <a class='feed-reader-link' href='https://icdyct.blogspot.com/feeds/posts/default' target='_blank'> <img align='absmiddle' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Atom </a> </div> </div> <div class='bottom'></div> </div> <div class='subscribe' id='SW_READER_LIST_CLOSED_Subscribe1POST' onclick='return(_SW_toggleReaderList(event, "Subscribe1POST"));'> <div class='top'> <span class='inner'> <img class='subscribe-dropdown-arrow' src='https://resources.blogblog.com/img/widgets/arrow_dropdown.gif'/> <span onclick='return(_SW_toggleReaderList(event, "Subscribe1POST"));'> <img align='absmiddle' alt='' border='0' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Posts </span> </span> </div> <div class='bottom'></div> </div> </div> <div class='subscribe-wrapper subscribe-type-PER_POST'> <div class='subscribe expanded subscribe-type-PER_POST' id='SW_READER_LIST_Subscribe1PER_POST' style='display:none;'> <div class='top'> <span class='inner' onclick='return(_SW_toggleReaderList(event, "Subscribe1PER_POST"));'> <img class='subscribe-dropdown-arrow' src='https://resources.blogblog.com/img/widgets/arrow_dropdown.gif'/> <img align='absmiddle' alt='' border='0' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Comments </span> <div class='feed-reader-links'> <a class='feed-reader-link' href='https://www.netvibes.com/subscribe.php?url=https%3A%2F%2Ficdyct.blogspot.com%2Ffeeds%2F7921754285248124471%2Fcomments%2Fdefault' target='_blank'> <img src='https://resources.blogblog.com/img/widgets/subscribe-netvibes.png'/> </a> <a class='feed-reader-link' href='https://add.my.yahoo.com/content?url=https%3A%2F%2Ficdyct.blogspot.com%2Ffeeds%2F7921754285248124471%2Fcomments%2Fdefault' target='_blank'> <img src='https://resources.blogblog.com/img/widgets/subscribe-yahoo.png'/> </a> <a class='feed-reader-link' href='https://icdyct.blogspot.com/feeds/7921754285248124471/comments/default' target='_blank'> <img align='absmiddle' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Atom </a> </div> </div> <div class='bottom'></div> </div> <div class='subscribe' id='SW_READER_LIST_CLOSED_Subscribe1PER_POST' onclick='return(_SW_toggleReaderList(event, "Subscribe1PER_POST"));'> <div class='top'> <span class='inner'> <img class='subscribe-dropdown-arrow' src='https://resources.blogblog.com/img/widgets/arrow_dropdown.gif'/> <span onclick='return(_SW_toggleReaderList(event, "Subscribe1PER_POST"));'> <img align='absmiddle' alt='' border='0' class='feed-icon' src='https://resources.blogblog.com/img/icon_feed12.png'/> Comments </span> </span> </div> <div class='bottom'></div> </div> </div> <div style='clear:both'></div> </div> </div><div class='widget Label' data-version='2' id='Label1'> <div class='title'>标签</div> <div class='widget-content cloud-label-widget-content'> <span class='label-size label-size-5'><a class='label-name' href='https://icdyct.blogspot.com/search/label/Telegram'>Telegram<span class='label-count'>94</span></a></span> <span class='label-size label-size-5'><a class='label-name' href='https://icdyct.blogspot.com/search/label/GPT%E5%BC%80%E5%8F%91'>GPT开发<span class='label-count'>68</span></a></span> <span class='label-size label-size-5'><a class='label-name' href='https://icdyct.blogspot.com/search/label/Agent%E5%BC%80%E5%8F%91'>Agent开发<span class='label-count'>62</span></a></span> <span class='label-size label-size-5'><a class='label-name' href='https://icdyct.blogspot.com/search/label/worker'>worker<span class='label-count'>60</span></a></span> <span class='label-size label-size-4'><a class='label-name' href='https://icdyct.blogspot.com/search/label/blogger'>blogger<span class='label-count'>50</span></a></span> <span class='label-size label-size-4'><a class='label-name' href='https://icdyct.blogspot.com/search/label/Url-Shorten-Worker'>Url-Shorten-Worker<span class='label-count'>42</span></a></span> <span class='label-size label-size-4'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E5%BC%80%E5%8F%91'>开发<span class='label-count'>40</span></a></span> <span class='label-size label-size-4'><a class='label-name' href='https://icdyct.blogspot.com/search/label/antispam'>antispam<span class='label-count'>28</span></a></span> <span class='label-size label-size-4'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E6%A1%88%E4%BE%8B'>案例<span class='label-count'>22</span></a></span> <span class='label-size label-size-3'><a class='label-name' href='https://icdyct.blogspot.com/search/label/CloudFlare'>CloudFlare<span class='label-count'>14</span></a></span> <span class='label-size label-size-3'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E6%B2%B9%E7%8C%B4'>油猴<span class='label-count'>12</span></a></span> <span class='label-size label-size-3'><a class='label-name' href='https://icdyct.blogspot.com/search/label/Agent%E5%BA%94%E7%94%A8'>Agent应用<span class='label-count'>8</span></a></span> <span class='label-size label-size-3'><a class='label-name' href='https://icdyct.blogspot.com/search/label/Hermes'>Hermes<span class='label-count'>8</span></a></span> <span class='label-size label-size-3'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E7%BC%96%E8%AF%91'>编译<span class='label-count'>8</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/cliproxyapi'>cliproxyapi<span class='label-count'>6</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/hack'>hack<span class='label-count'>6</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/tg-keyword-monitor-bot'>tg-keyword-monitor-bot<span class='label-count'>6</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/css'>css<span class='label-count'>4</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/fake-curl-wget-sh'>fake-curl-wget-sh<span class='label-count'>4</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/tg-keyword-react-bot'>tg-keyword-react-bot<span class='label-count'>4</span></a></span> <span class='label-size label-size-2'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E5%AF%86%E7%A0%81'>密码<span class='label-count'>4</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/AutoHotKey'>AutoHotKey<span class='label-count'>2</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/file-r2-worker'>file-r2-worker<span class='label-count'>2</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/ghproxy'>ghproxy<span class='label-count'>2</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/openclaw'>openclaw<span class='label-count'>2</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E7%BD%91%E7%AB%99'>网站<span class='label-count'>2</span></a></span> <span class='label-size label-size-1'><a class='label-name' href='https://icdyct.blogspot.com/search/label/%E9%9A%8F%E6%83%B3'>随想<span class='label-count'>2</span></a></span> </div> </div><div class='widget BlogArchive' data-version='2' id='BlogArchive1'> <div class='title'>Blog Archive</div> <div class='widget-content'> <div id='ArchiveList'> <div id='BlogArchive1_ArchiveList'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/'> 2026 <span class='post-count'>110</span> </a> </div> <div class='hierarchy-content'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/09/'> Sep 2026 <span class='post-count'>14</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/08/'> Aug 2026 <span class='post-count'>26</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/07/'> Jul 2026 <span class='post-count'>18</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/06/'> Jun 2026 <span class='post-count'>20</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/05/'> May 2026 <span class='post-count'>12</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/04/'> Apr 2026 <span class='post-count'>8</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/02/'> Feb 2026 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2026/01/'> Jan 2026 <span class='post-count'>10</span> </a> </div> <div class='hierarchy-content'> </div> </li> </ul> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2025/'> 2025 <span class='post-count'>70</span> </a> </div> <div class='hierarchy-content'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2025/12/'> Dec 2025 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2025/11/'> Nov 2025 <span class='post-count'>26</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2025/10/'> Oct 2025 <span class='post-count'>26</span> </a> </div> <div class='hierarchy-content'> <ul class='posts hierarchy'> <li> <a href='https://icdyct.blogspot.com/2025/10/hooking-getaddrinfo-to-detect-ipv4ipv6.html'>Hooking getaddrinfo to Test IPv4 Priority on Debia...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/ldpreload-getaddrinfo-socks5socks5h.html'>编译钩子 LD_PRELOAD加载 拦截系统接口调用getaddrinfo 验证socks5和soc...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/map-capslock-to-ctrl-on-long-press-and.html'>Map CapsLock to Ctrl on Long Press and Esc on Shor...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/autohotkey-capslock-ctrl-esc.html'>AutoHotKey 实现 CapsLock 一键双用 长按=Ctrl 短按=Esc</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-group-member-join-time-tool.html'>Telegram Group Member Join Time Tool with Sorted O...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot_01763858173.html'>电报防广告机器人 telegram antispam bot 相关功能 查询群组内的全部成员 增加入...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-bot-proactive-new-member.html'>Telegram Bot: Proactive New Member Verification Co...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot_0693840150.html'>电报防广告机器人 telegram antispam bot 新成员入群时需要人机验证 增加一个命令...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-clean-removed-users-remove.html'>Telegram Clean Removed Users: Remove Deleted Accounts</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot-removed-users.html'>电报防广告机器人 telegram antispam bot 相关功能 清除群组Removed Us...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-tool-kick-muted-users-lacking.html'>Telegram Tool: Kick Muted Users Lacking Speaking P...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot-exceptions_01611902369.html'>电报防广告机器人 telegram antispam bot 相关功能 踢除群组Exceptions...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-bot-yaml-cache-optimization.html'>Telegram Bot YAML Cache Optimization with GPT</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot_01663736125.html'>电报防广告机器人 telegram antispam bot 在群内发言时需要人机验证 效率优化 验...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-get-all-group-members-with.html'>Telegram Get All Group Members with Telethon</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot_01298571521.html'>电报防广告机器人 telegram antispam bot 相关功能 查询群组内的全部成员 对比C...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-bot-get-recent-group-message.html'>Telegram Bot: Get Recent Group Message Senders Use...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot-id.html'>电报防广告机器人 telegram antispam bot 相关功能 查询群组最近的消息 统计发言...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-bot-clean-exceptions-list-of.html'>Telegram Bot: Clean Exceptions List of Verified Users</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot-exceptions.html'>电报防广告机器人 telegram antispam bot 相关功能 清除群组Exceptions...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-group-audio-and-voice.html'>Telegram Permission Logic with Telethon</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telethon-python-telegram-bot-musicvoice.html'>Telethon 和 Python Telegram Bot 库 读取和设置群组的用户权限 Musi...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-anti-ad-bot-human-verification.html'>Telegram Anti-Ad Bot: Human Verification on First ...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot.html'>电报防广告机器人 telegram antispam bot 在群内发言时需要人机验证</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html'>Flexible Question-Answer Generation: HTML and RSS ...</a> </li> <li> <a href='https://icdyct.blogspot.com/2025/10/telegram-antispam-bot-html-rss-xml.html'>电报防广告机器人 telegram antispam bot 我的博客最新一期博文的标题是什么 ht...</a> </li> </ul> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2025/09/'> Sep 2025 <span class='post-count'>12</span> </a> </div> <div class='hierarchy-content'> </div> </li> </ul> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/'> 2024 <span class='post-count'>41</span> </a> </div> <div class='hierarchy-content'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/12/'> Dec 2024 <span class='post-count'>1</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/11/'> Nov 2024 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/10/'> Oct 2024 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/07/'> Jul 2024 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/06/'> Jun 2024 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/05/'> May 2024 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/04/'> Apr 2024 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/02/'> Feb 2024 <span class='post-count'>4</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2024/01/'> Jan 2024 <span class='post-count'>16</span> </a> </div> <div class='hierarchy-content'> </div> </li> </ul> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2023/'> 2023 <span class='post-count'>12</span> </a> </div> <div class='hierarchy-content'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2023/11/'> Nov 2023 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2023/06/'> Jun 2023 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2023/03/'> Mar 2023 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2023/01/'> Jan 2023 <span class='post-count'>2</span> </a> </div> <div class='hierarchy-content'> </div> </li> </ul> </div> </li> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2022/'> 2022 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> <ul class='hierarchy'> <li class='archivedate'> <div class='hierarchy-title'> <a class='post-count-link' href='https://icdyct.blogspot.com/2022/08/'> Aug 2022 <span class='post-count'>6</span> </a> </div> <div class='hierarchy-content'> </div> </li> </ul> </div> </li> </ul> </div> </div> </div> </div> <div class='widget BloggerButton' data-version='2' id='BloggerButton1'> <div class='widget-content'> <a href='https://www.blogger.com' rel='nofollow'> <img alt='Powered by Blogger' src='https://resources.blogblog.com/html/buttons/blogger-powerby-blue.gif' srcset='' width='128'/> </a> </div> </div> </div> </main> <footer> <div class='footer section' id='footer'><div class='widget Attribution' data-version='2' id='Attribution1'> <div class='widget-content'> <div class='blogger'> <a href='https://www.blogger.com' rel='nofollow'> <svg class='svg-icon-24'> <use xlink:href='/responsive/sprite_v1_6.css.svg#ic_post_blogger_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> </svg> Powered by Blogger </a> </div> <div class='copyright'><a href="https://icdyct.blogspot.com/p/icdyct.html">联系我 FollowMe</a></div> </div> </div> </div> </footer> <!-- 为所有 pre 添加 class='prettyprint'; 手动颜色由 b:skin 中 CSS 保护 --> <script type='text/javascript'> //<![CDATA[ (function(){ function run(){ document.querySelectorAll('pre').forEach(function(el){el.classList.add('prettyprint')}); if(window.PR&&typeof PR.prettyPrint==='function')PR.prettyPrint(); } if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',run);else run(); /* 兜底: run_prettify.js 异步就绪后一定能高亮 */ window.addEventListener('load',function(){if(window.PR&&typeof PR.prettyPrint==='function')PR.prettyPrint();}); })(); //]]> </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/851759228-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AAPvtVkheowK1XMcYaFaGpixXS2E:1789589595676';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d4362187242651091443','//icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html','4362187242651091443'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '4362187242651091443', 'title': 'ICDYCT / I Can Do, You Can Too', 'url': 'https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html', 'canonicalUrl': 'https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html', 'homepageUrl': 'https://icdyct.blogspot.com/', 'searchUrl': 'https://icdyct.blogspot.com/search', 'canonicalHomepageUrl': 'https://icdyct.blogspot.com/', 'blogspotFaviconUrl': 'https://icdyct.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': 'G-0HXB73X7VT', 'analytics4': true, 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22ICDYCT / I Can Do, You Can Too - Atom\x22 href\x3d\x22https://icdyct.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22ICDYCT / I Can Do, You Can Too - RSS\x22 href\x3d\x22https://icdyct.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22ICDYCT / I Can Do, You Can Too - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/4362187242651091443/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22ICDYCT / I Can Do, You Can Too - Atom\x22 href\x3d\x22https://icdyct.blogspot.com/feeds/7921754285248124471/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseClientId': 'ca-pub-2351123213541849', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': true, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/7ce469edaf870342', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': true, 'jumpLinkMessage': 'Read more \xbb', 'pageType': 'item', 'postId': '7921754285248124471', 'postImageThumbnailUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSbe56IuByTiBhvEPRIx7EQ9jYGeDIq5dl2wDH__jtd3SjuQ0_76JpwrhkGejE9l22T_jSvGIKp2pccS4NxZ3Q1LwMFEhMl5x2luzFlGO02X_Pzn4TjzThalk-0x52MxnfM6s_ZhCmjiwOJh_kh59D8Iq4Q_giUIhyphenhyphen3MWGH5ev_lG-NseW8TAvgQIO80/s72-c/chrome_2025-10-04_11-03-16.png', 'postImageUrl': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSbe56IuByTiBhvEPRIx7EQ9jYGeDIq5dl2wDH__jtd3SjuQ0_76JpwrhkGejE9l22T_jSvGIKp2pccS4NxZ3Q1LwMFEhMl5x2luzFlGO02X_Pzn4TjzThalk-0x52MxnfM6s_ZhCmjiwOJh_kh59D8Iq4Q_giUIhyphenhyphen3MWGH5ev_lG-NseW8TAvgQIO80/s16000/chrome_2025-10-04_11-03-16.png', 'pageName': 'Flexible Question-Answer Generation: HTML and RSS Parsing', 'pageTitle': 'ICDYCT / I Can Do, You Can Too: Flexible Question-Answer Generation: HTML and RSS Parsing', 'metaDescription': ''}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': true, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Flexible Question-Answer Generation: HTML and RSS Parsing', 'description': 'ICDYCT / I can do, You can too. \nI hope the thought path and practical process I share will enable you to become a creator and solve problems by DIY', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSbe56IuByTiBhvEPRIx7EQ9jYGeDIq5dl2wDH__jtd3SjuQ0_76JpwrhkGejE9l22T_jSvGIKp2pccS4NxZ3Q1LwMFEhMl5x2luzFlGO02X_Pzn4TjzThalk-0x52MxnfM6s_ZhCmjiwOJh_kh59D8Iq4Q_giUIhyphenhyphen3MWGH5ev_lG-NseW8TAvgQIO80/s16000/chrome_2025-10-04_11-03-16.png', 'url': 'https://icdyct.blogspot.com/2025/10/flexible-question-answer-generation.html', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 7921754285248124471}}, {'name': 'widgets', 'data': [{'title': 'ICDYCT / I Can Do, You Can Too (Header)', 'type': 'Header', 'sectionId': 'header', 'id': 'Header1'}, {'title': '', 'type': 'PageList', 'sectionId': 'header', 'id': 'PageList1'}, {'title': '\u641c\u7d22\u6b64\u535a\u5ba2', 'type': 'BlogSearch', 'sectionId': 'header', 'id': 'BlogSearch1'}, {'title': 'Blog Posts', 'type': 'Blog', 'sectionId': 'page_body', 'id': 'Blog1', 'posts': [{'id': '7921754285248124471', 'title': 'Flexible Question-Answer Generation: HTML and RSS Parsing', 'featuredImage': 'https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgSbe56IuByTiBhvEPRIx7EQ9jYGeDIq5dl2wDH__jtd3SjuQ0_76JpwrhkGejE9l22T_jSvGIKp2pccS4NxZ3Q1LwMFEhMl5x2luzFlGO02X_Pzn4TjzThalk-0x52MxnfM6s_ZhCmjiwOJh_kh59D8Iq4Q_giUIhyphenhyphen3MWGH5ev_lG-NseW8TAvgQIO80/s16000/chrome_2025-10-04_11-03-16.png', 'showInlineAds': false}], 'headerByline': {'regionName': 'header1', 'items': [{'name': 'labels', 'label': '\u67e5\u770b\u76f8\u5173\u4e3b\u9898:'}]}, 'footerBylines': [{'regionName': 'footer1', 'items': [{'name': 'timestamp', 'label': ''}]}, {'regionName': 'footer2', 'items': [{'name': 'comments', 'label': 'comments'}]}], 'allBylineItems': [{'name': 'labels', 'label': '\u67e5\u770b\u76f8\u5173\u4e3b\u9898:'}, {'name': 'timestamp', 'label': ''}, {'name': 'comments', 'label': 'comments'}]}, {'title': 'The Hot3 in Last 7 Days', 'type': 'PopularPosts', 'sectionId': 'page_body', 'id': 'PopularPosts1', 'posts': [{'title': 'Inject CSS into Blogger Editor Iframe with Tampermonkey', 'id': 3553967344278067707}, {'title': 'Compiling Telegram Desktop (tdesktop) on Oracle ARM VPS', 'id': 7694250347131230692}, {'title': 'Fixing Code-Prettify Colors with AI Agents in Blogger', 'id': 4245186178071263144}]}, {'title': 'Translate \u7ffb\u8bd1', 'type': 'Translate', 'sectionId': 'sidebar_bottom', 'id': 'Translate1'}, {'title': '\u8ba2\u9605\u5c0f\u5de5\u5177', 'type': 'Subscribe', 'sectionId': 'sidebar_bottom', 'id': 'Subscribe1'}, {'title': '\u6807\u7b7e', 'type': 'Label', 'sectionId': 'sidebar_bottom', 'id': 'Label1'}, {'title': 'Blog Archive', 'type': 'BlogArchive', 'sectionId': 'sidebar_bottom', 'id': 'BlogArchive1'}, {'title': '', 'type': 'BloggerButton', 'sectionId': 'sidebar_bottom', 'id': 'BloggerButton1'}, {'type': 'Attribution', 'sectionId': 'footer', 'id': 'Attribution1'}]}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PageListView', new _WidgetInfo('PageList1', 'header', document.getElementById('PageList1'), {'title': '', 'links': [{'isCurrentPage': false, 'href': 'https://icdyct.blogspot.com', 'id': '0', 'title': '\u9996\u9875'}, {'isCurrentPage': false, 'href': 'https://icdyct.blogspot.com/p/icdyct.html', 'id': '4555601671588765814', 'title': 'ICDYCT'}, {'isCurrentPage': false, 'href': 'https://icdyct.blogspot.com/search/label/blogger', 'title': 'Blogger'}, {'isCurrentPage': false, 'href': 'https://icdyct.blogspot.com/search/label/Telegram', 'title': 'Telegram'}, {'isCurrentPage': false, 'href': 'https://icdyct.blogspot.com/search/label/worker', 'title': 'Worker'}], 'mobile': false, 'showPlaceholder': true, 'hasCurrentPage': false}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'header', document.getElementById('BlogSearch1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'page_body', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/120969204-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'page_body', document.getElementById('PopularPosts1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_TranslateView', new _WidgetInfo('Translate1', 'sidebar_bottom', document.getElementById('Translate1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_SubscribeView', new _WidgetInfo('Subscribe1', 'sidebar_bottom', document.getElementById('Subscribe1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar_bottom', document.getElementById('Label1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'sidebar_bottom', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BloggerButtonView', new _WidgetInfo('BloggerButton1', 'sidebar_bottom', document.getElementById('BloggerButton1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>