用 Python 下载好看的米哈游 coser

米哈游不仅有原神,还有 coser 小姐姐和 coser 女装大佬,上班的时候用 python 爬虫偷偷下载,加班的时候摸摸鱼,谨防猝死。

封面

防爬虫

打开米哈游的 coser 界面 https://bbs.mihoyo.com/dby/topicDetail/547,并且在打开 F12 控制面板的时候,刷新页面。意外的是居然有 js 的防爬虫机制,表现为如下图:

js 代码是

(function anonymous() {
debugger
})

点击下面的倒数第二个按钮,破解掉它。

列表页

想要快速找到返回页面内容的 url 地址,可以在网络面板中使用 Ctrl+F 查找,然后对呀返回值一条条查看是否是需要的那条,这里找到了一条 getTopicPostList 地址的 url。

这个页面是没有翻页的,对比第二页的 getTopicPostList 请求地址,比第一个多了 last_id 参数,最终的参数为:

  • gids: 5,未知

  • last_id: 18114983,最后一个的 id

  • is_good: false,未知

  • is_hot: false,是否热门

  • page_size: 20,每页条数

  • forum_id: 47,板块 id

  • sort_type: 排序

import requests
import time

headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36",
        "Origin": "https://bbs.mihoyo.com",
        "Referer": "https://bbs.mihoyo.com/",
        "Host": "bbs-api.mihoyo.com"
    }

def request_get(url, ret_type):
    res = requests.get(url=url, headers=headers, timeout=5)
    res.encoding = "utf-8"
    if ret_type == "text":
        return res.text
    elif ret_type == "image":
        return res.content
    elif ret_type == "json":
        return res.json()

def main(last_id):
    url = f'https://bbs-api.mihoyo.com/post/wapi/getForumPostList?forum_id=47&gids=5&is_good=false&is_hot=false&last_id={last_id}&page_size=20&sort_type=2'
    res_json = request_get(url, "json")
    if res_json["retcode"] == 0:
        for item in res_json["data"]["list"]:
            post_id = item["post"]["post_id"]
            detail(post_id)
                
    if res_json["data"]["last_id"] != "":
        return main(res_json["data"]["last_id"])

详细页

详细的 url 地址也是返回的 json 串,而且只需要传递 post_id 参数就好了,比较简单。图片的 url 地址就在 ["data"]["post"]["image_list"] 下,在返回的图片中有违规的图片,需要提前处理下。

def detail(post_id):
    url = f"https://bbs-api.mihoyo.com/post/wapi/getPostFull?gids=5&post_id={post_id}&read=1"
    res_json = request_get(url, "json")
    if res_json["retcode"] == 0:
        image_list = res_json["data"]["post"]["image_list"]
        for img in image_list:
            img_url = img["url"]
            if (img_url.find("weigui")) < 0:
                save_image(img_url)

保存图片

保存图片就是普通的 with open 函数和文件的 write 函数。

def save_image(image_src):
    r = requests.get(image_src)
    content = r.content
    name = image_src.split('/')[-1]
    with open('D://mhy//' + name, "wb") as f:
        f.write(content)

总结

这篇文章的技术就使用了 requests 和 json 以及一点点的控制面板反爬虫。小伙伴们学会了吗?

以上就是本次分享的所有内容,如果你觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还可领取大量学习资料。或是前往编程学习网,了解更多编程技术知识。

### 使用 Stable Diffusion 进行服装生成与调整 #### 模型选择与准备 为了实现高质量的服装生成,建议使用经过特定领域训练的大规模预训练模型。这些模型能够更好地理解时尚元素并生成更真实的图像[^4]。 #### 参数设定 当利用 Stable Diffusion 创建服装设计时,几个关键参数会影响最终结果的质量: - **Denoising Strength (降噪强度)**:此值决定了原有图像保留多少特征以及新生成部分的比例。较低数值会保持更多原始细节;较高则倾向于创造全新外观。 - **Sampling Steps (采样步数)**:增加该数量通常能提高输出精度,但也可能延长处理时间。对于复杂图案或精细纹理尤其重要[^1]。 - **Guidance Scale (指导比例/提示词权重)**:控制着输入文本描述对生成过程的影响程度。适当增大可使成品更加贴近预期目标,不过过高的设置可能导致不自然的结果[^2]。 #### 提示工程(Prompt Engineering) 精心构建的提示语句有助于获得理想中的服饰样式。具体来说: - 描述应尽可能详尽,包括颜色、材质、风格等方面; - 可加入一些限定条件来约束创作范围,比如“一件适合夏季穿着的连衣裙”。 ```python prompt = "A summer dress with floral patterns, light blue color and cotton material" ``` #### 微调与迭代改进 初次尝试未必能达到满意效果,因此需要反复试验不同的组合直至找到最佳实践方案。记录每次变动及其对应成果可以帮助积累宝贵的经验教训[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值