如何使用Pywikibot的pagefromfile.py创建Wiki页面并验证结果
问题背景
- 目标站点架构与维基百科一致,可适配Pywikibot实现自动化页面创建
- 已知
pagefromfile.py脚本的作用是从本地文件创建wiki页面,但未找到配置新页面访问链接的对应位置;同时注意到Pagefromfile类的inter函数会返回page对象,需要确认页面创建成功的验证方式 - 现有测试代码除最后一行执行后未成功创建页面外,其余部分运行正常,测试代码如下:
site = pywikibot.Site('dev', 'wikidebates') # 配置要操作的目标站点 page = pywikibot.Page(site, "Faut-il légaliser le cannabis ?") text = page.get() #获取页面源码内容 wb = open("pages1.txt", "w", encoding="utf-8") wb.write(str(txt)) #将文本写入文件,用于后续上传到wiki wb.close() main_page('-file:pages1.txt') #调用pagefromfile.py的主函数,已重命名导入
问题原因与解决方案
现有代码无法创建页面的核心原因
- 变量名拼写错误:代码中读取页面内容赋值给了
text变量,但写入文件时调用的是未定义的txt变量,最终写入文件的内容不符合预期,无法生成有效页面。 - 文件格式不符合
pagefromfile.py的解析要求:该脚本不需要单独传参配置新页面链接,它通过固定标记识别文件内的页面信息:每个页面块必须以{{-start-}}开头,第二行用三对单引号包裹目标页面的完整标题(即新页面链接对应的标题部分),之后是页面正文内容,最后以{{-stop-}}标记结尾。单文件支持批量配置多个页面,没有这些标记的话脚本无法识别要创建的页面标题和内容边界,不会执行创建操作。
页面创建结果验证方法
拿到page对象后可通过三种方式验证:
- 调用
page.exists()方法,返回True即代表页面已在站点成功创建 - 读取
page.text属性,和你预期写入的内容做比对,一致则说明内容写入正确 - 调用
page.full_url()方法可获取页面的完整访问地址,直接访问即可确认页面实际展示状态
修正后的可运行参考代码
import pywikibot from scripts.pagefromfile import main as main_page # 初始化目标站点连接 site = pywikibot.Site('dev', 'wikidebates') # 定义待创建的新页面标题 target_title = "Faut-il légaliser le cannabis ?" # 替换为你要写入新页面的实际正文内容 target_content = "此处替换为待上传的页面正文内容" # 按照脚本要求的格式生成本地文件 with open("pages1.txt", "w", encoding="utf-8") as f: f.write("{{-start-}}\n") f.write(f"'''{target_title}'''\n") f.write(f"{target_content}\n") f.write("{{-stop-}}\n") # 执行创建操作,传入-new参数避免覆盖已存在的同名页面 main_page('-file:pages1.txt', '-new') # 校验创建结果 check_page = pywikibot.Page(site, target_title) if check_page.exists(): print(f"页面创建成功,访问地址:{check_page.full_url()}") else: print("页面创建失败,请检查账号权限、文件格式或站点连接状态")
内容的提问来源于stack exchange,提问作者Алексей Романов
相关产品推荐
相关产品推荐

