三角洲辅助卡盟新版上线,应有尽有
当前位置:首页 > 游戏攻略> 正文

赛尔号 斯塔克

发布时间:06/21 10:57:06
从零搭建Python爬虫抓取赛尔号斯塔克全角色属性数据实操指南

前置环境准备

你只需要提前安装好Python 3.8及以上版本,打开命令提示符(Windows)或终端(Mac/Linux),执行以下命令即可一键安装所有依赖,没有其他额外配置:

``` pip install requests beautifulsoup4 pandas ```

验证安装结果:执行完命令后如果没有出现红色报错,就说明安装成功,如果提示权限不足,Windows添加--user参数,Mac/Linux加sudo前缀即可。

第一步:编写基础请求代码

本次抓取的目标是赛尔号公开数据库中斯塔克的详情页,不需要登录,不需要额外权限,完整可直接复制的基础代码如下:

``` import requests from bs4 import BeautifulSoup import pandas as pd 赛尔号斯塔克详情页地址,直接可用 TARGET_URL = "https://www.seerdb.com/pet/1300" 反爬请求头,直接复制无需修改 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } 发起请求获取页面内容 response = requests.get(TARGET_URL, headers=HEADERS, timeout=10) response.encoding = "utf-8" if response.status_code != 200: print(f"请求失败,状态码:{response.status_code}") else: print("请求成功,开始解析数据") html = response.text ```

运行到这里如果报错,优先检查两个点:1.你的网络能否正常打开https://www.seerdb.com/pet/1300,打不开需要检查网络设置;2.复制代码时有没有遗漏引号或者括号,所有符号必须是英文半角。

第二步:解析提取斯塔克核心数据

我们需要提取斯塔克的基础信息、种族值、全技能三个核心部分,在刚才的代码后面追加以下解析代码即可,所有选择器已经适配当前页面结构,直接复制可用:

``` 初始化HTML解析器 soup = BeautifulSoup(html, "html.parser") 提取基础信息 base_info = {} base_info["角色ID"] = 1300 base_info["角色名称"] = soup.find("h1").get_text().strip() 提取属性、分类等基础信息 attr_box = soup.find("div", class_="pet-attr").find_all("p") for p in attr_box: key = p.find("span").get_text().strip().rstrip(":") value = p.get_text().replace(p.find("span").get_text(), "").strip() base_info[key] = value 提取种族值数据 race_vals = {} race_box = soup.find("div", class_="pet-race").find_all("li") for li in race_box: parts = li.get_text().split(":") k = parts[0].strip() v = parts[1].strip() race_vals[k] = v 提取全技能信息 skills = [] skill_table = soup.find("table", class_="skill-table") skill_rows = skill_table.find("tbody").find_all("tr") for tr in skill_rows: tds = tr.find_all("td") if len(tds) != 6: continue skill = { "技能名称": tds[0].get_text().strip(), "技能属性": tds[1].get_text().strip(), "技能类型": tds[2].get_text().strip(), "威力": tds[3].get_text().strip(), "PP值": tds[4].get_text().strip(), "效果描述": tds[5].get_text().strip() } skills.append(skill) 控制台预览提取结果 print("="50) print("基础信息:") print(base_info) print("\n种族值:") print(race_vals) print("\n技能列表预览:") print(pd.DataFrame(skills)) ```

注意事项:如果后续网站改版导致提取失败,只需要按F12打开浏览器开发者工具,选中对应数据模块,核对css类名替换代码中的class值即可,其他逻辑不需要修改。

第三步:导出数据到本地文件

提取完成后我们可以把所有数据导出为Excel文件,方便后续查看和使用,在刚才的解析代码后面追加以下内容:

``` 导出所有数据到Excel with pd.ExcelWriter("赛尔号斯塔克全属性数据.xlsx") as writer: pd.DataFrame([base_info]).to_excel(writer, sheet_name="基础信息", index=False) pd.DataFrame([race_vals]).to_excel(writer, sheet_name="种族值", index=False) pd.DataFrame(skills).to_excel(writer, sheet_name="技能列表", index=False) print("="50) print("数据导出完成,文件保存在当前运行目录下,文件名为:赛尔号斯塔克全属性数据.xlsx") ```

常见问题排查

  • ModuleNotFoundError错误:说明依赖没有安装成功,回到第一步重新执行pip安装命令,安装完成后再运行代码即可。
  • AttributeError错误:大概率是页面结构改版,找不到对应标签,按照上文说的方法重新核对css类名即可解决。
  • 导出后中文乱码:检查代码中response.encoding = "utf-8"这一行有没有漏加,确保复制完整就可以解决。
  • 请求超时:把代码中的timeout参数改大,改成30即可,或者等网络稳定后重新运行。

把所有代码按顺序拼接起来,直接运行就能得到完整的斯塔克全属性数据,全程不需要额外修改任何内容,零门槛就能落地。

版权保护: 本文由 741卡盟 原创,转载请保留链接: http://741ka.com/gamenews/22446.html