无法使用 selenium webdriver 获取所有 table 元素

Can't get all table elements using selenium webdriver

我正在尝试使用 Python/Selenium 从该网站获取所有信息: https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html

我已经成功获取了所有信息,但问题是它有 100 个元素,而我只获取了前 19 个(第一次加载页面时可以在 Chromium window 中看到的元素)。

我试着像这样向下滚动页面:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
driver.find_element_by_tag_name('body').send_keys(Keys.END)
driver.find_element_by_tag_name('body').send_keys(Keys.PAGE_DOWN)

等。它正在运行,但没有任何变化。我仍然只得到 100 个中的 19 个元素。我还尝试更改参数,例如 windows 大小、无头、最大化...等...没有任何改变。

chrome_driver_binary = "C:\scraping\selenium\chromedriver.exe"
options = webdriver.ChromeOptions()
options.add_argument('--lang=en')
options.add_argument("--disable-extensions")
options.add_argument('--headless')
options.add_argument('--window-size=1920x1480')
options.binary_location = "C:\Program Files (x86)\BraveSoftware\Brave-Browser\Application\brave.exe"

如果我在Selenium创建的chrome window主代码中手动编辑,我可以看到这里有所有元素。我也可以看到 window 如何向下滚动到底部。

那么,问题出在哪里?

这是成功捕获所有数据的主要代码(但只有 19 个第一个元素)。我把它放在以防它很重要。

TABLE_RESULT_BTC_TOP100 = soup1.find('table', id="tblOne").find('tbody')
for tr_tag in TABLE_RESULT_BTC_TOP100.find_all('tr'):

19 行在一个 table 中,接下来的行在另一个 table 中。你必须抓住 both tables.

此外,不需要 selenium

以下是获取所有 100 行的方法。

import requests
import pandas as pd

url = "https://bitinfocharts.com/top-100-richest-bitcoin-addresses.html"

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:99.0) Gecko/20100101 Firefox/99.0",
}

df = pd.read_html(requests.get(url, headers=headers).text, flavor="lxml")[2:4]
df = pd.concat(df)
print(df)

输出:

        0                                           1  ...   Outs Unnamed: 0
0     NaN                                         NaN  ...  449.0        1.0
1     NaN                                         NaN  ...   78.0        2.0
2     NaN                                         NaN  ...   77.0        3.0
3     NaN                                         NaN  ...    NaN        4.0
4     NaN                                         NaN  ...    NaN        5.0
..    ...                                         ...  ...    ...        ...
76   96.0  bc1qxv55wuzz4qsfgss3uq2zwg5y88d7qv5hg67d2d  ...    NaN        NaN
77   97.0  bc1qmjpguunz9lc7h6zf533wtjc70ync94ptnrjqmk  ...    NaN        NaN
78   98.0  bc1qyr9dsfyst3epqycghpxshfmgy8qfzadfhp8suk  ...    NaN        NaN
79   99.0  bc1q8qg2eazryu9as20k3hveuvz43thp200g7nw7qy  ...    NaN        NaN
80  100.0  bc1q4ffskt6879l4ewffrrflpykvphshl9la4q037h  ...    NaN        NaN

[100 rows x 20 columns]