# PokewikiCrawler **Repository Path**: static_void/pokewiki-crawler ## Basic Information - **Project Name**: PokewikiCrawler - **Description**: 神奇宝贝百科网站爬虫 - **Primary Language**: Python - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2021-01-31 - **Last Updated**: 2024-07-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 神奇宝贝百科网站爬虫 欢迎关注我的B站账号[静态空域](https://space.bilibili.com/29780644) 最后测试时间:2021/01/12 这是我的第一个项目,写得很乱。第一版写于2019年10月。《冠之雪原》售后,无论是宝可梦游戏还是神百网站都发生了变化,于是更新了这一版。 其中过程实在是费劲,我也不打算再更新了。感兴趣的朋友可以写一个更完善的版本。 ## START.py 本脚本为程序入口。依次收集宝可梦图鉴、招式、特性、道具列表,结果打印在text文件夹对应的txt文件中。 也可以单独运行以下脚本,实现相同功能: * pokedex.py 调用pokeinfo.py * move.py 调用moveinfo.py * ability.py 调用abilityinfo.py * item.py 调用iteminfo.py ## 其他 * listlearn.py 生成宝可梦招式学习列表 -> text/listlearn.txt。*进行了一些修改,删除了一些重复/无对战意义项目* * listitem.py 生成道具列表,只保留对战相关:道具/其他、Z纯晶、树果 -> text/listitem.txt * text/form.txt 保存宝可梦的不同形态相关数据。id:XXXa表示阿罗拉,XXXg表示伽勒尔,XXX=表示基础形态,XXX-表示额外形态。*手写的* * table.py 生成数据库,使用dex.txt;form.txt;move.txt(截掉宝可梦列表);listlearn.txt;ability.txt;listitem.txt -> pokedex.db * TableQuery.py 查询数据库。 ## 数据库各个表 ### dex 宝可梦图鉴 move 招式 item 道具 ability 特性 learn 可学会招式 * id:图鉴编号 id:编号 cn:中文名 id:编号 pid:宝可梦编号 * cn:中文名 cn:中文名 jp:日文名 cn:中文名 moves:可学会招式 * jp:日文名 jp:日文名 en:英文名 jp:日文名 * en:英文名 en:英文名 des:描述 en:英文名 * type1:属性1 type:属性 bag:背包 des:描述 * type2:属性2 class:类型 type:分类 num:宝可梦数 * ab1:特性1 power:威力 info:信息 hide:以隐藏特性存在数 * ab2:特性2 acc:命中 fling:投掷 info:信息 * ab3:特性3 pp:PP effect:效果 effect:效果 * high:身高 info:信息 * weigh:体重 range:范围 * gender:性别比 effect:效果 * hp:HP * at:攻击 * df:防御 * sa:特攻 * sd:特防 * sp:速度 ## pokeparser.py 本脚本实现各种实用功能。运行后打印图鉴、招式、特性、道具列表的简体中文网址。 ## XXXinfo.py 各单项的详细信息读取。比如:皮卡丘(图鉴);十万伏特(招式);避雷针(特性);电气球(道具)。 单独运行各脚本以测试工作情况。 ## url文件夹 没什么用。如果发现txt文件有错误,可以在对应的url文件中同一行找到网址,方便修改。 ## text文件夹 ### dex.txt格式(form.txt相同) * 图鉴编号 * 中文名 * 日文名 * 英文名 * 属性 * 特性 * 身高 * 体重 * 性别比:雄/全部。-1表示无性别。 * 种族值:HP/攻击/防御/特攻/特防/速度 ### move.txt格式 * 编号 * 中文名 * 日文名 * 英文名 * 属性 * 类型:物理、特殊、变化。。。 * 伤害 * 命中 * PP * 对战信息:接触、守住、王者之证。。。 * 范围 * 详细效果 * 可以学会招式的宝可梦列表(实际是用/分隔的字符串) ### ability.txt格式 * 编号 * 中文名 * 日文名 * 英文名 * 描述 * 具有作为普通特性存在的宝可梦数量 * 具有作为隐藏特性存在的宝可梦数量 * 基本信息:被交换、被覆盖、被复制。。。 * 效果 ### item.txt格式(listitem.txt相同) * 中文名 * 日文名 * 英文名 * 说明 * 游戏中所在背包(猜的) * 分类 * 使用相关:对战内外、重复性。。。 * 投掷伤害:-1表示不能投掷 * 效果 ### listlearn.txt格式 * 宝可梦图鉴编号 * 可以学会的招式编号列表(实际是用/分隔的字符串) ## 待完善 * 爬取的[基格尔德](https://wiki.52poke.com/zh-hans/%E5%9F%BA%E6%A0%BC%E5%B0%94%E5%BE%B7)的基本信息是50%形态,种族值却是10%形态[^1]。*只更正了dex.txt* * 爬取的[舍身冲撞](https://wiki.52poke.com/wiki/%E8%88%8D%E8%BA%AB%E5%86%B2%E6%92%9E%EF%BC%88%E6%8B%9B%E5%BC%8F%EF%BC%89)的教授招式列表001~385,漏掉了例外信息[^2]。*将move.txt修改为正常格式* * 将招式学习器中**睡觉**/**替身**/**守住**/**迷人**/**梦话**/**硬撑**的学习面更正为001~898,方便listlearn.py的执行。 * 道具没有全部爬完[^3],不过对战相关的道具本来就少,其实无所谓。*已知的有数据卡,招式学习器* [^1]:因为神百就是这么显示的 [^2]:只有这里的例外信息的class不是at-c。而且文字描述不同于其他的“对应世代中所有可以使用招式学习器的宝可梦”,而是“所有可以使用招式学习器的宝可梦”。 [^3]:item.py用title中包含(道具)来判断找到道具的中文名,而极少数道具的title没有(道具)。