0
1

統計局から労働力調査レポート一覧を取得する

Posted at

統計局は下記のページで労働力調査に関するレポートを毎月掲載しています。
この記事では統計局の労働力調査レポートを全て取得するpythonコードを記載します。

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

まず、対象とするメインページの内容を取得し、BeautifulSoupを使ってHTMLを解析します。このステップでは、全ての月ごとのリンクを取得します。

import requests
from bs4 import BeautifulSoup

# メインページのURL
main_url = 'https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200531&tstat=000000110001&cycle=1&tclass1=000001040276&tclass2=000001040277&tclass3val=0'

# ページの内容を取得
response = requests.get(main_url)
response.raise_for_status()

# BeautifulSoupでHTMLを解析
soup = BeautifulSoup(response.content, 'lxml')

# 各月へのリンクを取得
month_links = soup.select('ul.stat-cycle_ul_other a.stat-item_child')

requests.get() でメインページのHTMLを取得します。
response.raise_for_status() を使って、リクエストが正常に行われたかを確認します。
BeautifulSoup を使用してHTMLを解析し、各月へのリンクを取得するために soup.select() を利用します。

ステップ2: PDFリンクと公開日を取得

次に、各月のページに移動し、そこからPDFリンクと公開日を取得します。

# ベースURL
base_url = 'https://www.e-stat.go.jp'

# 各月のページに移動してPDFリンクと公開日を取得
for link in month_links:
    month_url = base_url + link['href']
    
    month_response = requests.get(month_url)
    month_response.raise_for_status()

    # 月ごとのページを解析
    month_soup = BeautifulSoup(month_response.content, 'lxml')

    # 公開日を探す
    publish_date_tag = month_soup.find('span', class_='stat-sp', text='公開(更新)日  ')
    if publish_date_tag:
        publish_date = publish_date_tag.find_next_sibling(text=True).strip()
    else:
        publish_date = "公開日が見つかりませんでした"

    # PDFリンクを探す
    pdf_link_tag = month_soup.find('a', class_='stat-dl_icon stat-icon_2 stat-icon_format js-dl stat-download_icon_left')
    
    if pdf_link_tag:
        pdf_url = base_url + pdf_link_tag['href']
        print(f"公開日: {publish_date}, PDF URL: {pdf_url}")
    else:
        print(f"公開日: {publish_date}, No PDF found")

各月のページにアクセスし、そのページを解析します。
find() メソッドを使って、公開日が書かれたタグを探します。
公開日のタグが見つかった場合、 find_next_sibling() を使用して、公開日の日付部分を取得します。
PDFリンクも同様に find() メソッドで探し、リンクが存在する場合は完全なURLを構築して取得します。

コード全体

import requests
from bs4 import BeautifulSoup

# メインページのURL
main_url = 'https://www.e-stat.go.jp/stat-search/files?page=1&layout=datalist&toukei=00200531&tstat=000000110001&cycle=1&tclass1=000001040276&tclass2=000001040277&tclass3val=0'

# ページの内容を取得
response = requests.get(main_url)
response.raise_for_status()

# BeautifulSoupでHTMLを解析
soup = BeautifulSoup(response.content, 'lxml')

# 各月へのリンクを取得
month_links = soup.select('ul.stat-cycle_ul_other a.stat-item_child')

# ベースURL
base_url = 'https://www.e-stat.go.jp'

# 各月のページに移動してPDFリンクと公開日を取得
for link in month_links:
    month_url = base_url + link['href']
    
    month_response = requests.get(month_url)
    month_response.raise_for_status()

    # 月ごとのページを解析
    month_soup = BeautifulSoup(month_response.content, 'lxml')

    # 公開日を探す
    publish_date_tag = month_soup.find('span', class_='stat-sp', text='公開(更新)日  ')
    if publish_date_tag:
        publish_date = publish_date_tag.find_next_sibling(text=True).strip()
    else:
        publish_date = "公開日が見つかりませんでした"

    # PDFリンクを探す
    pdf_link_tag = month_soup.find('a', class_='stat-dl_icon stat-icon_2 stat-icon_format js-dl stat-download_icon_left')
    
    if pdf_link_tag:
        pdf_url = base_url + pdf_link_tag['href']
        print(f"公開日: {publish_date}, PDF URL: {pdf_url}")
    else:
        print(f"公開日: {publish_date}, No PDF found")

0
1
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
1