2016-10-18 12 views
1

私は調査のためにウェブサイトを掻き回そうとしています。スクレーパーにページソースを読み込ませ、それをローカルのHTMLファイルに追加して、キャンパス外のデータを分析できるようにします。私はBeautifulSoupScrapyを試しましたが、私はSeleniumを使用して、私の大学の認証システムをナビゲートするページとやりとりする必要があることを発見しました。Page HTMLを掻き集めて、Seleniumの次のリンクに従う方法

スクリプトを実行すると、そのページに移動してリンクをクリックしますが、最初のページのHTMLのみが保存されます(このコードは私の質問に接しているからです)。次に、リンクをクリックするたびにそのページのHTMLを複製して追加します。

Seleniumを使用して次のページのリンクをクリックし、HTMLをスクラップし、最後のページに到達するまでファイルに保存するにはどうすればよいですか?

編集:exceptにAttributeErrorを追加し、次のエラーを受け取りました。

selenium.common.exceptions.StaleElementReferenceException:メッセージ:参照 古い要素:要素はページの文書に添付されていないが

私の仮定は、私が理由である、.click()を遅くする必要があるということです私はもともと暗黙の待っていたが、それはトリックをやっているようではありません。

+0

を除いて、あなたの裸を取り除くと、あなたがはるかに有益なエラーメッセージ – n1c9

+0

ありがとうn1c9を得るでしょう、私は除いにはAttributeErrorを追加し、それは私が上に追加のエラーコード与えた:StaleElementReferenceExceptionを。 – woodNUFC

+0

ページに何かポップインがありますか?それとも通常のように次のページに移動しますか?また、 'implicitly_wait(num)'は、あなたがウェブドライバを初期化するときに設定されるはずですが、それは文体的なものです。 – n1c9

答えて

0

sourceに割り当てる必要があります。

source = driver.page_source 

while True: 
with open("test.html", "a") as TestFile: 
    TestFile.write(source) 
    try: 
     driver.implicitly_wait(200) 
     driver.find_element_by_css_selector('li.next').click() 
     source = driver.page_source 
    except AttributeError: 
     break 
+0

ありがとう!これは役に立ちましたが、今は各ページの出力に重複があります。たとえば、次のように出力されます。Pag​​e1Page1 Page1Page2Page2Page2Page3Page3 – woodNUFC

+0

次のリンクをクリックした後、スクリプトをしばらく待ってから、ページソースを取得します。 –

+0

あなたが提案したように待ち時間を追加しました。今は動作しているようです。ありがとう、@SudharsanSelvaraj – woodNUFC

関連する問題