【发布时间】:2022-01-13 18:41:48
【问题描述】:
我想在这个网站的中间刮掉整个桌子: https://www.brilliantearth.com/lab-diamonds-search/
我使用以下代码进行了尝试 - 但我只获得了表的前 200 行:
import time
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
import os, sys
import xlwings as xw
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
from fake_useragent import UserAgent
if __name__ == '__main__':
WAIT = 3
ua = UserAgent()
userAgent = ua.random
options = Options()
# options.add_argument('--headless')
options.add_experimental_option ('excludeSwitches', ['enable-logging'])
options.add_argument("start-maximized")
options.add_argument('window-size=1920x1080')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
options.add_argument(f'user-agent={userAgent}')
srv=Service(ChromeDriverManager().install())
driver = webdriver.Chrome (service=srv, options=options)
waitWebDriver = WebDriverWait (driver, 10)
lElems = []
link = f"https://www.brilliantearth.com/lab-diamonds-search/"
# driver.minimize_window() # optional
driver.get (link)
time.sleep(WAIT)
driver.find_element(By.XPATH,"(//button[@title='Accept All'])[1]").click()
time.sleep(WAIT)
soup = BeautifulSoup (driver.page_source, 'html.parser')
time.sleep(WAIT)
tmpSearch = soup.find("div", {"id": "diamond_search_wrapper"})
tmpDIVs = tmpSearch.select("div.inner.item")
for idx,elem in enumerate(tmpDIVs):
tmpTD = elem.find_all("td")
row = []
for e2 in tmpTD:
row.append(e2.text)
print(idx, row)
我想用 selenium 向下滚动到该表的最底部。 但是当我向下滚动时,只有整个页面向下滚动,而不是里面的表格。
如何在表格中向下滚动到底部? (然后可能会从表中刮掉所有元素)
【问题讨论】:
标签: python selenium web-scraping beautifulsoup