AKB48と乃木坂46のサイトから画像と名前をスクレイピングしたよ。
AKB48と乃木坂46のサイトから画像と名前をスクレイピングしたよ。
Pythonでのスクレイピングの続きです。
AKB48のサイトと乃木坂46の公式サイトにメンバー一覧があります。ここから、名前と画像のURLをCSVに取得しました。
[使用パッケージ]
- pandas
- selenium
- time
- subprocess
作った流れはこんな感じ
1 nogisaka-sc.pyファイルを作り、乃木坂のサイトからデータ取得
2 akb-sc.pyファイルを作り、AKBのサイトからデータ取得
3 両方のファイルを実行するファイルget-idol.pyを作成し1,2のファイルを順に実行するファイルを作成する
1のコードは以下
from selenium import webdriver
import pandas
import time
"""***************************************
設定
***************************************"""
browser = webdriver.Chrome()
df = pandas.read_csv('default.csv', index_col=0)
url = "http://www.nogizaka46.com/member/" #取得サイト
"""******************************
CSS SELECTORの設定
******************************"""
POSTS = "div.unit"
ACTRESS_NAME = "span.main" #名前
"""***************************************
実行部分
***************************************"""
browser.get(url)
print("Starting to get posts...")
posts = browser.find_elements_by_css_selector(POSTS) #メンバー数
print (len(posts))
for post in posts:
try:
name = post.find_element_by_css_selector("span.main").text
class_name = post.find_element_by_tag_name("img").get_attribute("class")
print(name)
thumnailURL = "http://img.nogizaka46.com/www/member/img/" + class_name + "_prof.jpg"
print(thumnailURL)
se = pandas.Series([name,thumnailURL,"nogisaka"],["name", "image","group"])
df = df.append(se, ignore_index=True)
except Exception as e:
print(e)
"""***************************************
書き出し部分
***************************************"""
print("Finished Scraping. Writing CSV.......")
df.to_csv("idol.csv", encoding="UTF-8", mode="a", header="false")
print("CSV Writed.")
"""***************************************
後処理部分
***************************************"""
browser.close()
print("DONE")
最初に読み込んでいるdefault.csvは ,name,url だけが書いてあるCSVファイルです。最終書き出し時にヘッダになります。
from selenium import webdriver
import pandas
import time
"""***************************************
設定
***************************************"""
browser = webdriver.Chrome()
df = pandas.read_csv('default.csv', index_col=0)
url = "https://www.akb48.co.jp/about/members/" #取得サイト
"""******************************
CSS SELECTORの設定
******************************"""
POSTS = "li"
ACTRESS_NAME = "h4.memberListNamej" #名前
"""***************************************
実行部分
***************************************"""
browser.get(url)
print("Starting to get posts...")
posts = browser.find_elements_by_css_selector(POSTS) #メンバー数
print (len(posts))
for post in posts:
try:
name = post.find_element_by_css_selector(ACTRESS_NAME).text
#class_name = post.find_element_by_tag_name("img").get_attribute("class")
print(name)
thumnailURL = post.find_element_by_tag_name("img").get_attribute("src")
# thumnailURL = "http://img.nogizaka46.com/www/member/img/" + class_name + "_prof.jpg" #画像は固定で
print(thumnailURL)
se = pandas.Series([name,thumnailURL,"akb"],["name", "image","group"])
df = df.append(se, ignore_index=True)
except Exception as e:
print(e)
"""***************************************
書き出し部分
***************************************"""
print("Finished Scraping. Writing CSV.......")
df.to_csv("idol.csv", encoding="UTF-8", mode="a", header="true")
print("CSV Writed.")
"""***************************************
後処理部分
***************************************"""
browser.close()
print("DONE")
だいたい一緒ですね。
でこれを読み出すファイル
import subprocess
path = ['akb-sc.py', 'nogisaka-sc.py']
def main():
ret1 = subprocess.run(["python", path[0]],check=True)
print(ret1)
ret2 = subprocess.run(["python", path[1]],check=True)
print(ret2)
if __name__ == "__main__":
main()
ディスカッション
コメント一覧
まだ、コメントがありません