xHamsterの最新動画スクレイピング

Pythonを使用し、xHamsterに投稿された最新動画をスクレイピングするコードを紹介します。

動画タイトル、動画時間、画像URL、動画ページのURL、画質、閲覧数
を取得し、CSVで保存しています。

最新のSeleniumを使用するとエラーが出るので、少し古めのSeleniumを使用してください。
また、適宜必要なものはインストールしてください。

main.py

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
from time import sleep
import csv

HEADER = ['動画タイトル', '再生時間', '画像URL', '動画ページURL', '画質', '閲覧数']

browser = webdriver.Chrome(ChromeDriverManager().install())

# 検索開始ページ
page = 1

# 検索するページ数
max_page = 5

# 保存するCSVファイル名
save_csv = 'xhamster1.csv'


def get_url(page=1):
    url = 'https://xhamster.com/categories/japanese/newest/{}'.format(page)
    return url


if __name__ == "__main__":
    with open(save_csv, 'a', encoding='utf-8', newline='') as f:
        writer = csv.writer(f)
        writer.writerow(HEADER)

    while page <= max_page:
        print("Processing page {} of {}".format(page, max_page))
        url = get_url(page)
        browser.get(url)
        contents = browser.find_elements_by_class_name('thumb-list__item')
        
        with open(save_csv, 'a', encoding='utf-8', newline='') as f:
            writer = csv.writer(f)
            
            for content in contents:
                title = content.find_element_by_class_name('video-thumb-info__name').text
                time = content.find_element_by_class_name('thumb-image-container__duration').text
                views = content.find_element_by_class_name('video-thumb-views').text
                image = content.find_element_by_class_name('thumb-image-container__image').get_attribute('src')
                link = content.find_element_by_class_name('video-thumb__image-container').get_attribute('href')
                try:
                    content.find_element_by_class_name('thumb-image-container__icon thumb-image-container__icon--hd')
                    quality = 'HD'
                except:
                    quality = 'SD'
                    
                row = [title.replace('\n', ' '), time.replace('\n', ' '), image.replace('\n', ' '), link.replace('\n', ' '), quality, views.replace('\n', ' ')]
                writer.writerow(row)
                        
                sleep(10)
        page += 1
        print("Completed page {} of {}".format(page - 1, max_page))

    browser.quit()

著作権の問題もありますので、使用時はご注意願います。
このサイトのスクレイピングには時間がかかりますので、気長に待ってください。

Googleスプレッドシートへ読み込ませた後の動画サムネの表示は、
新しい列を追加してIMAGE関数を使用すれば表示されます。

=IMAGE('画像URLのセル')


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