Selenium + Pythonを使用して、リンクをループし、結果のページからデータをスクレイピングします

A.ハムザ

私はSeleniumを初めて使用し、次のように構造化されたリンクのリストを含むWebサイトをスクレイプする必要があります。

<a class="unique" href="...">
    <i class="something"></i>
    "Text - "
    <span class="something">Text</span>
</a>
<a class="unique" href="...">
    <i class="something"></i>
    "Text - "
    <span class="something">Text</span>
</a>
...
...

ループ内のリンクのこのリストをクリックして、結果ページからデータを取得する必要があります。私が今までやってきたことは:

lists = browser.find_elements_by_xpath("//a[@class='unique']")
for lis in lists:
    print(lis.text)
    lis.click()
    time.sleep(4)
    # Scrape data from this page (works fine).
    browser.back()
    time.sleep(4)

最初のループでは問題なく動作しますが、2番目のループが到達すると

print(lis.text)

次のようなエラーがスローされます。

StaleElementReferenceException:メッセージ:古い要素参照:要素はページドキュメントに添付されていません

私が試したところprint (lists)、すべてのリンク要素のリストが表示されるので、正常に機能します。この問題は、ブラウザが前のページに戻ったときに発生します。browser.get(...)代わりに時間を延長して使用しようとしましたbrowser.back()が、それでもエラーが残ります。lis.textリストにはまだすべての要素のリストが含まれているため、印刷されない理由がわかりませんどんな助けでも大歓迎です。

アリCSE

リンクを起動するのではなく、テキストをクリックしようとしています。

また、各リンクをクリックしてデータをスクレイピングして戻ることも効果的ではないようです。代わりに、すべてのリンクをリストに保存してから、driver.get('some link')メソッドを使用して各リンクに移動し、データをスクレイピングできます。いくつかの例外を回避できるように、以下の変更されたコードを試してください。

# Locate the anchor nodes first and load all the elements into some list
lists = browser.find_elements_by_xpath("//a[@class='unique']")
# Empty list for storing links
links = []
for lis in lists:
    print(lis.get_attribute('href'))
    # Fetch and store the links
    links.append(lis.get_attribute('href'))

# Loop through all the links and launch one by one
for link in links:
    browser.get(link)
    # Scrap here
    sleep(3)

または、同じロジックを使用する場合は、Fluent Waitを使用して、以下のようなStaleElementReferenceExceptionなどのいくつかの例外を回避できます。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import *

wait = WebDriverWait(browser, 10, poll_frequency=1, ignored_exceptions=[StaleElementReferenceException])
element = wait.until(EC.element_to_be_clickable((By.XPATH, "xPath that you want to click")))

お役に立てば幸いです...

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Seleniumがscrapy-seleniumモジュールを使用して複数のJavaScriptページからデータをスクレイピングする

分類Dev

複数のページからSeleniumを使用してリンクをスクレイピングする

分類Dev

Selenium Python(NSFW)を使用してWebページからURLをスクレイピングする

分類Dev

Pythonでseleniumまたはbeautifulsoupを使用してリンクのあるページからデータをスクレイピング、クラスなし、IDなし

分類Dev

Python Seleniumを使用してスクリプト要素(HTML)からCSVにデータをスクレイピングする方法

分類Dev

Seleniumを使用してスクレイピングすることにより、Webページからジオロケーションを取得します

分類Dev

Python / Seleniumを使用してWebページのコンテンツをスクレイプします

分類Dev

BeautifulSoupを使用したSeleniumのスクロールとスクレイピングは、重複した結果を生成します

分類Dev

PythonでSeleniumを使用してWebスクレイピングのループを作成する

分類Dev

SeleniumとPythonを使用してフィルターを変更するすべての試合の最初のイニングの解説のために、cricinfoWebサイトからデータをスクレイピングする方法

分類Dev

Seleniumを使用してUnderstatチャートデータをスクレイピングする際の問題

分類Dev

Python:SeleniumがRegexでループの最後のWebページをスクレイピングしないのはなぜですか?

分類Dev

Seleniumは、Webページをスクレイピングした後、空の要素を返します

分類Dev

Seleniumを使用してReactテーブルをスクレイピングする

分類Dev

SeleniumとPythonを使用してMorningstarWebサイトをスクレイプします。Seleniumは完全なWebページをダウンロードしません

分類Dev

リンクのリストを1つずつ実行してから、selenium(driver.get)を使用してデータをスクレイピングするにはどうすればよいですか?

分類Dev

Seleniumを使用してget_elements_by_xpathでループ内の各ボタンクリック後にページソースを取得します

分類Dev

PythonとSeleniumを使用してドライバースクレーパーを作成しようとしています。Webページから特定のデータを取得して、csvの行と列に配置する必要があります。

分類Dev

PythonでSeleniumを使用して検索した後、結果のテーブルをスクレイプする方法が見つかりません

分類Dev

Seleniumを使用してTwitterから動的ツイートをスクレイピングする

分類Dev

Python、Selenium、BeautifulSoupを使用して、タグのコンテンツをスクレイプしますか?

分類Dev

Seleniumを使用してページをロードし、情報をスクレイピングする際の問題

分類Dev

PhantomJSとSeleniumを使用してWebデータをスクレイピングする

分類Dev

Seleniumを使用してWebサイトテーブルからアイテムをスクレイピングするとどうなりますか?

分類Dev

BeautifulSoupとSeleniumを使用してWebサイトの複数のWebページのコンテンツをスクレイピングする

分類Dev

PythonでSeleniumを使用してレビューをスクレイピングする際の問題

分類Dev

PythonでSeleniumを使用してHighchartsをスクレイピング中にエラーが発生しました

分類Dev

Python3でSeleniumを使用して動的テーブルをスクレイピングする

分類Dev

Windows 10 で Selenium と Python 3.6 を使用してテーブルをスクレイピングする方法

Related 関連記事

  1. 1

    Seleniumがscrapy-seleniumモジュールを使用して複数のJavaScriptページからデータをスクレイピングする

  2. 2

    複数のページからSeleniumを使用してリンクをスクレイピングする

  3. 3

    Selenium Python(NSFW)を使用してWebページからURLをスクレイピングする

  4. 4

    Pythonでseleniumまたはbeautifulsoupを使用してリンクのあるページからデータをスクレイピング、クラスなし、IDなし

  5. 5

    Python Seleniumを使用してスクリプト要素(HTML)からCSVにデータをスクレイピングする方法

  6. 6

    Seleniumを使用してスクレイピングすることにより、Webページからジオロケーションを取得します

  7. 7

    Python / Seleniumを使用してWebページのコンテンツをスクレイプします

  8. 8

    BeautifulSoupを使用したSeleniumのスクロールとスクレイピングは、重複した結果を生成します

  9. 9

    PythonでSeleniumを使用してWebスクレイピングのループを作成する

  10. 10

    SeleniumとPythonを使用してフィルターを変更するすべての試合の最初のイニングの解説のために、cricinfoWebサイトからデータをスクレイピングする方法

  11. 11

    Seleniumを使用してUnderstatチャートデータをスクレイピングする際の問題

  12. 12

    Python:SeleniumがRegexでループの最後のWebページをスクレイピングしないのはなぜですか?

  13. 13

    Seleniumは、Webページをスクレイピングした後、空の要素を返します

  14. 14

    Seleniumを使用してReactテーブルをスクレイピングする

  15. 15

    SeleniumとPythonを使用してMorningstarWebサイトをスクレイプします。Seleniumは完全なWebページをダウンロードしません

  16. 16

    リンクのリストを1つずつ実行してから、selenium(driver.get)を使用してデータをスクレイピングするにはどうすればよいですか?

  17. 17

    Seleniumを使用してget_elements_by_xpathでループ内の各ボタンクリック後にページソースを取得します

  18. 18

    PythonとSeleniumを使用してドライバースクレーパーを作成しようとしています。Webページから特定のデータを取得して、csvの行と列に配置する必要があります。

  19. 19

    PythonでSeleniumを使用して検索した後、結果のテーブルをスクレイプする方法が見つかりません

  20. 20

    Seleniumを使用してTwitterから動的ツイートをスクレイピングする

  21. 21

    Python、Selenium、BeautifulSoupを使用して、タグのコンテンツをスクレイプしますか?

  22. 22

    Seleniumを使用してページをロードし、情報をスクレイピングする際の問題

  23. 23

    PhantomJSとSeleniumを使用してWebデータをスクレイピングする

  24. 24

    Seleniumを使用してWebサイトテーブルからアイテムをスクレイピングするとどうなりますか?

  25. 25

    BeautifulSoupとSeleniumを使用してWebサイトの複数のWebページのコンテンツをスクレイピングする

  26. 26

    PythonでSeleniumを使用してレビューをスクレイピングする際の問題

  27. 27

    PythonでSeleniumを使用してHighchartsをスクレイピング中にエラーが発生しました

  28. 28

    Python3でSeleniumを使用して動的テーブルをスクレイピングする

  29. 29

    Windows 10 で Selenium と Python 3.6 を使用してテーブルをスクレイピングする方法

ホットタグ

アーカイブ