前提・実現したいこと
pythonを使って、ウェブページのチャットをスクレイピングしたいです。
seleniumのwebdriver.Chrome()を使って機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
--------------------------------------------------------------------------- SessionNotCreatedException Traceback (most recent call last) <ipython-input-13-8746a6610530> in <module> 12 13 while 1 < 2:#無限ループ ---> 14 driver = webdriver.Chrome() 15 driver.get("https://chat_AAA.jp/archive") 16 df = pd.DataFrame(columns=["タイトル","日付","名前","内容","カテゴリー"]) ~\Anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 79 remote_server_addr=self.service.service_url, 80 keep_alive=keep_alive), ---> 81 desired_capabilities=desired_capabilities) 82 except Exception: 83 self.quit() ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in __init__(self, command_executor, desired_capabilities, browser_profile, proxy, keep_alive, file_detector, options) 155 warnings.warn("Please use FirefoxOptions to set browser profile", 156 DeprecationWarning, stacklevel=2) --> 157 self.start_session(capabilities, browser_profile) 158 self._switch_to = SwitchTo(self) 159 self._mobile = Mobile(self) ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in start_session(self, capabilities, browser_profile) 250 parameters = {"capabilities": w3c_caps, 251 "desiredCapabilities": capabilities} --> 252 response = self.execute(Command.NEW_SESSION, parameters) 253 if 'sessionId' not in response: 254 response = response['value'] ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params) 319 response = self.command_executor.execute(driver_command, params) 320 if response: --> 321 self.error_handler.check_response(response) 322 response['value'] = self._unwrap_value( 323 response.get('value', None)) ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response) 240 alert_text = value['alert'].get('text') 241 raise exception_class(message, screen, stacktrace, alert_text) --> 242 raise exception_class(message, screen, stacktrace) 243 244 def _value_or_default(self, obj, key, default): SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 79
なお、ここで例に挙げているURLは実在するものではありません。
該当のソースコード
python
1 2 3 4try: 5 if args[2]: 6 print(str(args[1])+"個のスレッドを抽出します") 7 print(str(args[2])+"日おきに抽出します") 8 number = int(args[1]) + 9 9 sleep = int(args[2])*24*60*60 10 11except: 12 print("全てのスレッドを抽出します") 13 print(str(args[1])+"日おきに抽出します") 14 sleep = int(args[1])*24*60*60 15 16while 1 < 2:#無限ループ 17 driver = webdriver.Chrome() 18 driver.get("https://chat_AAA.jp/archive") 19 df = pd.DataFrame(columns=["タイトル","日付","名前","内容","カテゴリー"]) 20 21 for i in range(8): 22 driver.find_elements_by_tag_name("li")[i].click()#左のタイトルクリック 23 category = driver.find_elements_by_tag_name("li")[i].text 24 print(category) 25 time.sleep(5) 26 27 rights = driver.find_elements_by_tag_name("li")#右側の情報 28 #category = driver.find_elements_by_xpath('//*[@id="1"]')[i].text#追加 29 30 n=1 31 for right in rights:#右側の情報を一個づつ 32 #五の倍数でスクロール 33 34 if n < 9: 35 n+=1 36 continue#最初の8回はスキップ(左側がliに入っているため) 37 38 p = right 39 a = p.text.split("\n") 40 if len(a) == 1: 41 title = "" 42 day = datetime.strptime(a[0], '%Y-%m-%d %H:%M:%S') 43 else: 44 title = a[0] 45 day = datetime.strptime(a[1], '%Y-%m-%d %H:%M:%S') 46 p.click()#クリック 47 time.sleep(5) 48 49 page_source = driver.page_source 50 soup = BeautifulSoup(page_source, 'html.parser') 51 time.sleep(1) 52 #title = soup.find("div", attrs={"class", "arch_title"}).text 53 time.sleep(1) 54 texts = soup.find_all("div", attrs={"class", "ms_row"}) 55 56 for t in texts:#文章を取得 57 base = t.find_all("div") 58 name = base[1].text 59 text = base[2].text.replace("\n","") 60 one_article = pd.Series([title, day, name, text, category],["タイトル","日付","名前","内容","カテゴリー"]) 61 df = df.append(one_article, ignore_index=True) 62 63 n+=1 64 if n % 5 == 0: 65 driver.execute_script("arguments[0].scrollIntoView(true);", p)#スクロール 66 time.sleep(3) 67 68 ###おまけ 69 try: 70 if args[1]: 71 if n % number ==0:#2が 9+2 72 break 73 except: 74 continue 75 76 77 78 date = datetime.now() 79 times = str(date.year)+"-"+str(date.month)+"-"+str(date.day)+"-"+str(date.hour)+"-"+str(date.minute) 80 df.to_csv("chat_AAA"+times+".csv") 81 print("chat_AAA"+times+".csv を作成しました。") 82 83 driver.quit()#ブラウザを終了 84 print("待機中") 85 time.sleep(int(sleep))
試したこと
errorの説明からseleniumがchrome79にしか対応していないのだと理解して、chrome79にアップデート・メインブラウザとして設定しました。現時点でchrome79はβ版であり、12/10に正式にリリースされるようです。
補足情報(FW/ツールのバージョンなど)
import chromedriver_binary
from selenium import webdriver
import pandas as pd
import time
import sys
import random
from bs4 import BeautifulSoup
import pandas as pd
import datetime
import urllib.request
import re
import json
from datetime import datetime
from time import sleep
Python3.7
Anaconda
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/20 07:31