米哈游不仅有原神,还有coser小姐姐和coser女大佬。上班的时候用python爬虫偷偷下载,加班的时候摸摸鱼。小心猝死。封面反??爬虫打开Mihoyo的coser界面https://bbs.mihoyo.com/dby/topicDetail/547,打开F12控制面板时,刷新页面。令人惊奇的是,竟然还有js反爬虫机制,如下图:js代码为(functionanonymous(){debugger})点击下方倒数第二个按钮即可破解。如果想在列表页面快速找到返回页面内容的url地址,可以在网络面板中使用Ctrl+F查找,然后逐一查看返回值,看是不是你的需要。在这里您可以找到getTopicPostList地址的url。此页没有翻页。对比第二页的getTopicPostList请求地址,last_id参数比第一页多。最后的参数是:gids:5,unknownlast_id:18114983,lastidis_good:false,unknownis_hot:false,popularpage_size:20,forum_id:47,plateidsort_type:sortimportrequestsimporttimeheaders={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/98.0.4758.102Safari/537.36","Origin":"https://bbs.mihoyo.com","Referer":"https://bbs.mihoyo.com/","Host":"bbs-api.mihoyo.com"}defrequest_get(url,ret_type):res=requests.get(url=url,headers=headers,timeout=5)res.encoding="utf-8"ifret_type=="text":返回res.textelifret_type=="image":返回res.contentelifret_type=="json":返回res.json()defmain(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")ifres_json["retcode"]==0:data"foritemson[inres_j]["list"]:post_id=item["post"]["post_id"]detail(post_id)ifres_json["data"]["last_id"]!="":]returnjson[data"_["last_id"])详情页的详细url地址也是返回的json字符串,只需要传入post_id参数即可。比较简单的图片的url地址在“data”[“image_list”]下,返回的图片中有违规图片,需要提前处理。defdetail(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")如果res_json["retcode"]==0:image_list=res_json["data"]["post"]["image_list"]forimginimage_list:img_url=img["url"]uiif"img_url.find("weig))<0:save_image(img_url)saveimagesaveimage是正常的,具有打开功能和文件写入功能。defsave_image(image_src):r=requests.get(image_src)content=r.contentname=image_src.split('/')[-1]withopen('D://mhy//'+name,"wb")asf:f.write(content)总结本文的技术使用requests和json以及一点控制面板反爬虫。大家学会了吗?以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能领取大量学习资料。或者去编程学习网了解更多编程技术知识。
