PythonでSeleniumを使用してWebページをスクラブしています。私はこのコードを使用して要素を見つけることができています:PythonセレニウムWebdriverコードパフォーマンス
from selenium import webdriver
import codecs
driver = webdriver.Chrome()
driver.get("url")
results_table=driver.find_elements_by_xpath('//*[@id="content"]/table[1]/tbody/tr')
results_table
の各要素は、順に要素に要素から変化するサブ要素の数とサブ要素の集合です。私の目標は、各要素をリストまたは区切り文字列として出力ファイルに出力することです。私のコードは、これまでのところ、このです:
results_file=codecs.open(path+"results.txt","w","cp1252")
for element in enumerate(results_table):
element_fields=element.find_elements_by_xpath(".//*[text()][count(*)=0]")
element_list=[field.text for field in element_fields]
stuff_to_write='#'.join(element_list)+"\r\n"
results_file.write(stuff_to_write)
#print (i)
results_file.close()
driver.quit()
このコードの第二部は、〜400の要素のリストで約2.5分、約10のサブ要素を持つそれぞれかかります。私は希望の出力を得るが、それは遅すぎる。それを改善するために私は何ができますか? python 3.6
ワンショットで全ページをダウンロードし、BeautifulSoupのようなものを使って処理します。私はしばらくスプリントやセレンを使用していませんが、splinterでは .htmlがページを表示します。私はセレンの構文が何であるか分かりませんが、ページ全体を取得する方法があるはずです。 –
Gary02127
私はセレンを使用しています。なぜなら、ログインが必要なウェブサイトのページを徹底的に調べる必要があるからです。ページごとに一度ログインしないようにしたいと思います。 BeautifulSoupはオプションですが、アクティブなchromedriverページをどのように取得するのかわかりません。それでも、学習上、私はコード内で構造的に間違ったことをしているに違いない。 –
@horace_vrファイルの最後に1回だけ書き込むと、各繰り返しの代わりにforループの後にスピードアップしますか? – Grasshopper