7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

動画サイトにおけるWebスクレイピング

Last updated at Posted at 2018-06-28

##背景
近年,様々な動画サイトが誕生している.
各サイト工夫を凝らしているが,その工夫が各ユーザに対してフィットしているとは言い難い.

そこで,動画サイトにある動画情報だけをWebスクレイピングで収集し,
収集したデータからユーザが使いやすいようにデータを加工できれば有用でないかと考えた.

##目的
動画サイトにある動画情報を収集するWebスクレイピングプログラムを作成する

##構築
・Python 3.0
・selenium webdriver
・Microsoft Edge

##必要な事
1.特定のサイトを把握
2.そのサイトの構造を把握
3.何を出力したいか(動画のタイトル,id,タグなど)

##実践
以下の点に注意
1.csvファイルに出力していますが,出力先などは個人のお好きなように
2.webdriverはEdge,Firefoxなどに対応
3.このプログラムでは動画のid,タイトル,現在の日付をファイルに書き込んでいます
各サイトでHTML/CSSの構造は異なるのでしっかりと個々のサイトに対応するようにしましょう!!

from selenium import webdriver
import numpy as np
import pandas as pd
import datetime
import sys
sys.setrecursionlimit(10000)
today=datetime.date.today()

#csvファイル(既存データ)の読み込み
df=pd.read_csv("既存データ先")
#df=pd.DataFrame(index=[],columns=["id","name","date"])

#ブラウザ開く(most-popular today)
driver=webdriver.Edge('webdriverのインストール先')
for i in np.arange(1,11):
    if i==1:
        driver.get("対象のスクレイピング先")
    else:
        a="対象のスクレイピング先/%s/" % str(i)
        driver.switch_to.default_content()  #最上位に戻す
        driver.get(a)
#    time.sleep(5)

    #動画のリスト取得
    l=driver.find_element_by_class_name("wrapper")
    l=l.find_element_by_class_name("main")
    l=l.find_element_by_class_name("row row3")
    l=l.find_element_by_class_name("content")
    l=l.find_element_by_class_name("thumbs-items")

    #そのページの動画一覧
    for i in l.find_elements_by_class_name("thumb"):
        a=i.find_element_by_tag_name("a")
        index=a.get_attribute("href").find('/',27)
        #id,nameをDataFrameに追加
        df=df.append(pd.DataFrame([[int(a.get_attribute("href")[27:index]),a.get_attribute("href")[index+1:-1],today.isoformat()]],columns=["id","name","date"]),ignore_index=True)
        #df.append(df2,ignore_index=True)
  
#重複データの削除(前残し)
df=df.drop_duplicates(["id"])
#dataframeの出力
df.to_csv("csvファイル出力先",index=False)
        
driver.close()
driver.quit()

##終わりに
上記のプログラムでは動画のidとタイトルを出力していましたが,プログラムを書き換えればタグや再生回数なども抽出できます.
もし,ある動画サイトを使用していて使いにくいと感じたら,スクレイピングを行い自分好みにカスタマイズする必要があるでしょう.
今後は蓄積したデータからフィルタ処理を行っていきたいと思います.
それでは!!

以下,Githubで公開しているURLです.
https://github.com/minna30waiwai/web-scraing-movie-site

7
12
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
7
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?