[M1 Mac, MacOS Ventura 13.3.1, Python 3.10.4]
スレッドタイトルとスレッドIDを取得するPythonスクリプトを書きました。
次はこのスクリプトをC++へ変換したいです。難しくなるようであればモジュール化します。
機能はPythonで下書きしてC++へ変換あるいはモジュール化、GUIはFLTK(C++)でコーディングしていきます。
import requests
import re
from bs4 import BeautifulSoup
# URLからHTMLファイルを取り込む
url = 'スレッドタイトル表示URL(HTMLファイル)'
response = requests.get(url)
response.encoding = response.apparent_encoding
html = response.text
# BeautifulSoupを使用してHTMLを解析する
soup = BeautifulSoup(html, 'html.parser')
# <small id="trad">タグで囲まれた部分の内容を取得する
trad_tags = soup.find_all('small', id='trad')
thread_list = []
for trad_tag in trad_tags:
content = trad_tag.get_text()
# <a>タグのhref属性の値を正規表現で取得する
pattern = r'<a\s+href=[\'"]([^\'"]+)[\'"]'
href = re.findall(pattern, str(trad_tag))
# contentをaタグごとに分割してリストにする
content_list = re.split(r'<a\s+href=[\'"][^\'"]+[\'"]', str(trad_tag))
print(f"hrefの要素数: {len(href)}")
print(f"content_listの要素数: {len(content_list)}")
# 辞書型データのリストを作成する
for i in range(len(href)):
thread_list.append({'href': (href[i])[:-4], 'content': (content_list[i+1].strip().replace("</a>","").replace("</small>",""))[1:]})
# リストの内容を出力する
for thread in thread_list:
print(thread['href'])
print(thread['content'])