暇だったので、今話題の上級国民様の使途不明金をまとめてみた。

巷で話題の上級国民様の裏金確認状況をpythonでまとめてみました。
ついでに、スプレッドシートのおさらいもかねて、スプレッドシートに顔つきです。
まとめサイトから、スクレイピングしたので、常時更新が入ります。皆さんも、どんな人が、どれくらいで、説明状況についても一覧を張っておきます。ついでに、各個人の公式HPも貼っておくかね。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome import service as fs
from selenium.webdriver.chrome.options import Options
from urllib.parse import urljoin
import time
import requests
from bs4 import BeautifulSoup
import pandas as pd
import shutil
import csv
import os
url = 'https://news.ntv.co.jp/pages/uragane'
options = webdriver.ChromeOptions()
#options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
driver.maximize_window()
driver.get(url)
driver.execute_script("""delete Object.getPrototypeOf(navigator).webdriver;""")
iframe = driver.find_element(By.XPATH, '//*[@id="appMountPoint"]/div/div[2]/div[2]/div/div/div[1]/div[1]/div/div/div/div/div/div/iframe')
driver.switch_to.frame(iframe)
element = driver.find_element(By.XPATH, '/html/body/div')
soup = BeautifulSoup(driver.page_source, 'html.parser')
driver.switch_to.default_content()
driver.close()
for i in soup1:
    #print('ここから')
    image_div = i.find('div', class_='image')                     # div要素のクラスが'image'であるものを探す
    style_value = image_div.get('style')                          # style属性の値を取得
    start_index = style_value.find('url("') + len('url("')        # url(" と "); の間にあるURLを抽出する
    end_index = style_value.find('")', start_index)
    url = style_value[start_index:end_index]                      # URLを取得
    print("上級国民で在られる議員様のご尊顔", url)
    h2_element = i.find('h2')                                     # h2要素を探す
    name = h2_element.text.strip().replace('(安)','').replace('(二)','')                                # テキストを取得
    print("お名前:",name + '先生' )  
    h1_element = i.find('h1', class_='title')                     # h1要素のクラスが'title'であるものを探す
    price = h1_element.text.strip()                          # テキストを取得
    print("限りなく怪しい収支報告書に記載していない金:",price )
    paragraphs = i.find_all('p')                               # p要素の中からテキストを取得
    #text_content = ' '.join([p.text.strip() for p in paragraphs]) # テキストを取得して連結
    text_content =paragraphs[1].text.strip().replace('【使途】','')  # テキストを取得して連結
    print("国民への弁明状況",text_content)
    print( )

# お決まりの文句
# 2つのAPIを記述しないとリフレッシュトークンを3600秒毎に発行し続けなければならない
scope = ['https://www.googleapis.com/auth/spreadsheets','https://www.googleapis.com/auth/drive']
#ダウンロードしたjsonファイル名をクレデンシャル変数に設定。
credentials = Credentials.from_service_account_file("------------", scopes=scope)
#OAuth2の資格情報を使用してGoogle APIにログイン。
gc = gspread.authorize(credentials)
#スプレッドシートIDを変数に格納する。
SPREADSHEET_KEY = '------------'
# スプレッドシート(ブック)を開く
wb = gc.open_by_key(SPREADSHEET_KEY)
ws = wb.worksheet('New Sheet Name')
ws.clear()
wb.values_append("New Sheet Name", {"valueInputOption": "USER_ENTERED"}, {"values": gaslist})
ws.insert_row(['上級国民で在られる議員様のご尊顔',"上級国民で在られる方のお名前",'限りなく怪しい収支報告書に記載していない金額','国民への弁明状況'], 1)

wb = gc.open_by_key(SPREADSHEET_KEY)
ws = wb.worksheet('New Sheet Name')
df = pd.DataFrame(ws.get_values()[1:],columns=ws.get_values()[0:])
#print(df['image'])
requests  = []
requests.append({
      "insertDimension": {
        "range": {
          "sheetId": '0',
          "dimension": "COLUMNS",
          "startIndex": 1,
          "endIndex": 2
        },
        "inheritFromBefore": True
      }
    })

body = {
    'requests': requests
}

wb.batch_update(body)
num = 2
for i in df['上級国民で在られる議員様のご尊顔']:
    for j in i:
        url ="=IMAGE(" + '"' + j + '"' +", 4,300,450)"
        ws.append_row([url], value_input_option='USER_ENTERED', table_range='B' + str(num) )
        num += 1
        #print(num)

ws.delete_columns(1)
wb = gc.open_by_key(SPREADSHEET_KEY)
ws = wb.worksheet('New Sheet Name')
ws.insert_row(['-----------------------------------------------------------------image-------------------------------------------------------------------','Title','Brand','Type','Outer Shell Material','Style','Size Type','Size','Department','Color','UPC','Lining Material','Theme','Accent','Features','Insulation Material','Fabric Type','Pattern','Jacket/Coat Length','Season','Closure','Occation','Condition','Description','Price'], 1)
body = {
    "requests": [
        {
            "autoResizeDimensions": {
                "dimensions": {
                    "sheetId": '0',
                    "dimension": "COLUMNS",
                    "startIndex": 0,  # Please set the column index.
                    "endIndex": 30  # Please set the column index.
                }
            }
        }
    ]
}
wb.batch_update(body)
ws.delete_rows(1)
ws.insert_row(['上級国民で在られる議員様のご尊顔',"上級国民で在られる方のお名前",'限りなく怪しい収支報告書に記載していない金額','国民への弁明状況'], 1)
ws.delete_rows(2)
print('転記完了')




この記事が気に入ったらサポートをしてみませんか?