trsing’s diary

勉強、読んだ本、仕事で調べたこととかのメモ。

艦これイベントスレから攻略編成書き込みの番号抽出

背景

攻略情報まとめてくれているいつもの人が忙しいらしいどうしよう困った。誰か・・・誰か助けてくれ

目的

艦これイベントスレから海域攻略編成書き込みの番号を抽出する

コード

import sys
import requests
from bs4 import BeautifulSoup
import re


def getHenseiNo(url):
    res = requests.get(url)
    soup = BeautifulSoup(res.text, 'html.parser')
    dts = soup.find_all('dt')  # 1:名無しの提督@~
    dds = soup.find_all('dd')  # 内容

    dct = dict()
    kaiikiPattern = r'【海域】.*(E-?\d-?\d?)'
    for dt, dd in zip(dts, dds):
        no = dt.find('a').get_text()
        for text in dd.get_text().split('\n'):
            ret = re.match(kaiikiPattern, text)
            if ret:
                kaiiki = ret.group(1)
                kaiiki = re.sub('E-', 'E', kaiiki)
                l = dct.get(kaiiki, [])
                l.append(no)
                dct[kaiiki] = l
                break
    return sorted(dct.items(), key=lambda x: x[0])


if __name__ == '__main__':
    ret = getHenseiNo(sys.argv[1])
    for k, n in ret:
        print(f'{k}\n>>{",".join(n)}')

使い方と出力

$ python printHenseiNo.py http://jbbs.shitaraba.net/bbs/read.cgi/netgame/12394/1620448639/
E1-1
>>18,20,49,60,61,70,82
E1-2
>>19,21,24,28,57,71,78,83,114
E1-3
>>22,23,35,42,45,59,72,79,84
E2
>>58
E2-1
>>36,37,48,51,55,74,80,81,98
E2-2
>>38,54,56,69,85,94,101,103,107
E2-3
>>40,88,108,109,115
E3
>>99,117,122,135
E3-1
>>53,62,104,116,118,132
E3-2
>>63,64,102,105,110,119,123,133
E3-3
>>67,86,89,90,91,97,106,111,112,113,120,136,138
E4-1
>>127,128,131,134,140

謝辞

情報書き込んだりまとめたりしてくれる人ありがとう。いつもお世話になっています。感謝。

その他

札おおすぎてわけわからないたすけて