質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

0回答

681閲覧

seleniumを使ってコードを書いたがcolabの実行が終わらない

yoshitaka_1020

総合スコア17

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/01/06 09:14

前提・実現したいこと

colabを使用してコードを書きましたが
実行した際に以下に記載しているコードセルの実行がいつまで経っても完了しない。

該当のソースコード

python

1!apt-get update 2!pip install selenium 3!apt install chromium-chromedriver 4!cp /usr/lib/chromium-browser/chromedriver /usr/bin 5!apt-get -y install fonts-ipafont-gothic 6 7import sys 8 9from selenium import webdriver 10from selenium.webdriver.chrome.options import Options 11 12sys.path.insert(0,'/usr/lib/chromium-browser/chromedriver') 13 14from google.colab import drive 15drive.mount('/content/drive') 16 17def chrome_driver(): 18 options = Options() 19 options.add_argument('--headless') 20 options.add_argument('--no-sandbox') 21 options.add_argument('--disable-dev-shm-usage') 22 return webdriver.Chrome('chromedriver', options=options) 23 24 25driver = chrome_driver() 26try: 27 driver.get('https://www.google.com/') 28 print(driver.current_url) # https://www.google.com/ 29finally: 30 driver.quit()
# seleniumでEnterキーを送信する際に使用するのでimport from selenium.webdriver.common.keys import Keys # seleniumでヘッドレスモードを指定するためにimport from selenium.webdriver.chrome.options import Options # 待ち時間を指定するためにtimeをimport import time # 正規表現にマッチする文字列を探すためにreをimport import re # Googleのトップページ URL = 'https://www.google.com/' # Googleのトップページに遷移したらタイトルに'Google'が含まれているか確認するために指定 ''' メインの処理 Googleの検索エンジンでキーワードを検索 指定されたドメインが検索結果の1ページ目に含まれていないキーワードをテキストファイルに出力 ''' def main(): with open('/content/drive/MyDrive/検索キーワードファイル.txt のコピー') as f: # '検索キーワードリスト.txt'ファイルを読み込み、リストにする keywords = [s.rstrip() for s in f.readlines()] with open('/content/drive/MyDrive/競合リスト.txt のコピー') as f: # 1行ずつ読み込んで改行コードを削除してリストにする domains = [s.rstrip() for s in f.readlines()] # 'ドメインリスト.txt'ファイルを読み込み、リストにする # 1行ずつ読み込んで改行コードを削除してリストにする options = webdriver.ChromeOptions() # seleniumで自動操作するブラウザはGoogleChrome # Optionsオブジェクトを作成 # ヘッドレスモードを有効にする options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # ChromeのWebDriverオブジェクトを作成 #driver = webdriver.Chrome(options=options, executable_path=r"/content/drive/MyDrive") #driver = webdriver.Chrome('chromedriver',chrome_options=chrome_options) driver = webdriver.Chrome('chromedriver',options=options) #driver = webdriver.Chrome(options=options) # driver = webdriver.Chrome(options=options, executable_path=r"Windowsのchromedriver.exeを置いたパス") driver.get(URL) # Googleのトップページを開く time.sleep(2) # 2秒待機(読み込みのため) # タイトルに'Google'が含まれていることを確認 ok_keywordlist = [] for keyword in keywords:# 検索キーワードを1つずつ取り出す search(keyword,driver)# search関数実行 urls = get_url(driver) # get_url関数を実行し、戻り値をurlsに代入 weak_keywordlist = domain_checked(urls,domains,ok_keywordlist,keywords)# domain_checked関数を実行し、戻り値をok_keywordlistに代入 with open('結果.txt','w')as f: # '結果.txt'という名前を付けて、ドメインチェックしたキーワードをファイルに書き込む f.write('/n'.join(weak_keywordlist))# ドメインチェック済みのキーワードを1行ずつ保存 driver.quit() # ブラウザーを閉じる
''' 検索テキストボックスに検索キーワードを入力し、検索する ''' def search(keyword,driver): input_element = driver.find_element_by_name("q")# 検索テキストボックスの要素をname属性から取得 input_element.clear()# 検索テキストボックスに入力されている文字列を消去 input_element.send_keys("keyword")# 検索テキストボックスにキーワードを入力 input_element.send_keys(Keys.RETURN)# Enterキーを送信 time.sleep(2)# 2秒待機 # タイトルにkeywordが含まれていることを確認 ''' 検索結果ページの1位から10位までのURLを取得 ''' def get_url(driver): urls = [] # 各ページのURLを入れるためのリストを指定 objects = driver.find_elements_by_css_selector('div.yuRUbf > a') # a要素(各ページの1位から10位までのURL)取得 if objects: # objects = driver.find_elements_by_css_selector('.rc > .r > a') for object in objects: urls.append(object.get_attribute('href')) # 各ページのURLをリストに追加 else: print('URLが取得できませんでした') # 各ページのURLが取得できなかった場合は警告を出す #rso > div:nth-child(10) > div > div.yuRUbf > a return urls # 各ページのURLを戻り値に指定 ''' URLリストからドメインを取得し、指定ドメインに含まれているかチェック ''' def domain_checked(urls,domains,keyword,ok_keywordlist):# URLリストから各ページのURLを1つずつ取り出す for url in urls: # '//〇〇/'に一致する箇所(ドメイン)を抜き出す m = re.search(r'//(.*?)/',url) domain = m.group(1) # '//〇〇/'の'〇〇'に一致する箇所を抜き出し、domainに代入 if 'www.' in domain: # ドメインに'www.'が含まれているかチェック domain = domain[4:] # 含まれているなら'www.'を除去 if domain in domains: # 各ページのドメインが指定ドメインに含まれているかチェック print(f'キーワード{"ファッション"}の検索結果には大手ドメインがありましたので除外します') # 含まれているなら警告を出す break # 1つでも含まれているなら他はチェックする必要がないので関数を終了 else: ok_keywordlist.append('ファッション') # 指定ドメインに含まれていないならキーワードをok_keywordlistに追加 return ok_keywordlist# ドメインチェック済みのキーワードを戻り値に指定 # main関数を実行 if __name__ == "__main__": main()

↑ここのコードセルが完了しません。

補足情報(FW/ツールのバージョンなど)

chrome OS, Google colab

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問