Python:Selenium分页只保存第1页到列表,而不保存第2、3页等



selenium代码在每个页面中正确运行和分页(在selenium弹出窗口中,您可以看到它从第1-356页开始(。

但它是";driver.page_source";只保存第一页或前几页的表。你知道为什么只有前几页而不是1-356页被添加到列表中吗?非常感谢!

更新:如果我保持selenium弹出窗口作为活动窗口,这似乎是可行的,但如果我想同时运行多个selenium窗口,有办法解决这个问题吗

import pandas as pd
from selenium import webdriver
driver = webdriver.Chrome()
url = 'https://www.assessedvalues2.com/SearchPage.aspx?jurcode=36'
page = driver.get(url)
time.sleep(3)
driver.find_element_by_xpath('//*[@id="ctl00_MainContent_BtnSearch"]').click()
time.sleep(2)
df_master = []
for i in range(1,357):
driver.find_element_by_xpath('//*[@id="ctl00_MainContent_TxtPage"]').clear()
driver.find_element_by_xpath('//*[@id="ctl00_MainContent_TxtPage"]').send_keys(str(i), Keys.ENTER)
time.sleep(3)
df = pd.read_html(driver.page_source)
df = pd.concat(df)
df_master.append(df)
time.sleep(2)

df_master = pd.concat(df_master)
Full_Table_df = pd.DataFrame(df_master)
display(Full_Table_df)

selenium有点嘶嘶作响,因为发送键和浏览器窗口不在前台。

您可以尝试在发送密钥之前发送点击

elem = driver.find_element_by_xpath('//*[@id="ctl00_MainContent_TxtPage"]')
elem.clear()
elem.click()
elem.send_keys(str(i), Keys.ENTER)

但既然你想在后台运行,你应该使用无头驱动

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.headless = True
driver = webdriver.Chrome(options=chrome_options)

最新更新