0
0

日本工作機械工業会の統計ページからPDFリンクを自動抽出するPythonスクリプト

Posted at

日本工作機械工業会(JMTBA)の統計ページから、各月の統計情報を含むPDFリンクを自動的に抽出するPythonスクリプトを紹介します。このスクリプトは、BeautifulSoupとrequestsライブラリを使用して、指定されたページからPDFファイルのリンクと対応する日付を抽出するプロセスを自動化します。

ステップ1: メインページの内容を取得

まず、指定されたベースURLから、統計情報が含まれるリスト項目を抽出します.

import requests
from bs4 import BeautifulSoup

def extract_statistics_pdfs(base_url):
    # ベースURLのページを取得
    response = requests.get(base_url)
    response.raise_for_status()

    # BeautifulSoupでHTMLを解析
    soup = BeautifulSoup(response.text, 'html.parser')

    # すべてのリスト項目を取得
    list_items = soup.select('li.statisticsSec__listItem')

    pdf_links = []

requests.get(base_url): Pythonのrequestsライブラリを使用して、指定したURLからページのHTMLコンテンツを取得します。

soup = BeautifulSoup(response.text, 'html.parser'): BeautifulSoupを使用して、取得したHTMLを解析可能なオブジェクトに変換します。

list_items = soup.select('li.statisticsSec__listItem'): HTML内の統計データが含まれるリスト項目をすべて抽出します。

ステップ2: 各リスト項目からPDFリンクと日付を取得

次に、抽出したリスト項目からPDFリンクとそれに対応する日付を取得します

    # 各リスト項目をループ
    for item in list_items:
        # 日付の取得
        date_text = item.select_one('span.statisticsSec__listItemSpan').get_text(strip=True)

        # PDFリンクの取得
        link = item.select_one('a.statisticsSec__listItemLink').get('href')

        # 日付とリンクをリストに追加
        pdf_links.append((date_text, link))

    return pdf_links

日付の取得:
date_text = item.select_one('span.statisticsSec__listItemSpan').get_text(strip=True): 各リスト項目内のタグから日付テキストを抽出します。

PDFリンクの取得:
link = item.select_one('a.statisticsSec__listItemLink').get('href'): 各リスト項目内のaタグからPDFリンクを取得します。

日付とリンクのペアをリストに追加:
pdf_links.append((date_text, link)): 取得した日付とリンクをペアにしてリストに追加します。

最終結果の出力

抽出された日付とPDFリンクのペアを表示します。

# 使用例
base_url = 'https://www.jmtba.or.jp/statistics/'  # ベースURL
pdf_links_with_dates = extract_statistics_pdfs(base_url)

# 取得した日付とPDFリンクを表示
for date, pdf in pdf_links_with_dates:
    print(f"{date}: {pdf}")
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0