Python 3.x 使用Selenium访问动态表中的数据

Python 3.x 使用Selenium访问动态表中的数据,python-3.x,selenium,beautifulsoup,Python 3.x,Selenium,Beautifulsoup,下面的代码起作用并填写两个表格,这两个表格是进入本页表格所必需的: 填完表格后,表格显示了不同保险公司的概况,以及您每年为汽车保险支付的金额。因此,这是一个比较服务。我需要每周一次对这个概述进行总结 我不知道怎么做。我知道如何使用BS4进行刮削,但我还需要公司名称,而不仅仅是信息,这是无法通过查看Chrome网站获得的。如果我潜入 通过网络和XHR,我找到了这个链接 https://forsikringsguiden.dk/signalr/poll?transport=longPolling&a

下面的代码起作用并填写两个表格,这两个表格是进入本页表格所必需的:

填完表格后,表格显示了不同保险公司的概况,以及您每年为汽车保险支付的金额。因此,这是一个比较服务。我需要每周一次对这个概述进行总结

我不知道怎么做。我知道如何使用BS4进行刮削,但我还需要公司名称,而不仅仅是信息,这是无法通过查看Chrome网站获得的。如果我潜入 通过网络和XHR,我找到了这个链接

https://forsikringsguiden.dk/signalr/poll?transport=longPolling&messageId=d-D7589F50-A%2C0%7C9%2C0%7C_%2C1%7C%3A%2C0&clientProtocol=1.4&connectionToken=fUYa3MT52oKf77Y6yU1sLnXiVzPw2CD4XgA8x50EfifJlz8XTPjBeP0klHUKt2uXmnisqO0KLk3fCb5bjOZ8k%2FeJl8zaXAgtRIALW9rzMF%2F8L7Pk3MOYwPRY4md1sDk5&connectionData=%5B%7B%22name%22%3A%22insuranceofferrequesthub%22%7D%5D&tid=9&_=1572505813840
这显示了我需要的所有数据,但我无法在selenium中导航到此页面

我如何解决这个问题

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time

chrome_options = Options()
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--disable-gpu")

# enable browser logging
d = DesiredCapabilities.CHROME
d['loggingPrefs'] = { 'browser':'ALL' } 
driver = webdriver.Chrome(desired_capabilities = d, options=chrome_options)
driver.fullscreen_window()

wait = WebDriverWait(driver,1)

driver.get("https://forsikringsguiden.dk/#!/bilforsikring/manuel")

#time.sleep(5)

#remove cookie bar
driver.find_element_by_id('cookieBarAccept').click()        

maerke = driver.find_element_by_xpath('//*[@id="s2id_carSelectedMake"]/a').click()
driver.find_element_by_xpath('//*[@id="s2id_autogen1_search"]').send_keys("Hyundai")
driver.minimize_window()
driver.maximize_window()
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()


model = driver.find_element_by_xpath('//*[@id="s2id_autogen2"]').click()
driver.find_element_by_xpath('//*[@id="s2id_autogen3_search"]').send_keys("i30")
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()

driver.execute_script("scrollBy(0,250)")         

aargang = driver.find_element_by_xpath('//*[@id="s2id_autogen4"]/a').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="s2id_autogen5_search"]').send_keys("2009")
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()

driver.execute_script("scrollBy(0,250)") 

motor_str = driver.find_element_by_xpath('//*[@id="s2id_autogen6"]/a').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="s2id_autogen7_search"]').send_keys("1,6")
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()


variant = driver.find_element_by_xpath('//*[@id="s2id_autogen8"]').click()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="s2id_autogen9_search"]').send_keys("1,6 CRDi 116HK 5d")
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()

driver.execute_script("scrollBy(0,250)")         

godkend_oplysninger = driver.find_element_by_xpath('//*[@id="content"]/div[4]/form/div[6]/div/button').click()


#Om dig siden

driver.get("https://forsikringsguiden.dk/#!/bilforsikring/omdig")     

alder = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="content"]/div/div[2]/div[2]/form/div[1]/div[1]/div/input')))
alder.send_keys("50")

adresse = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="adresse-autocomplete"]')))
adresse.send_keys("Havevang 8, 3. th, 4300 Holbæk", Keys.ENTER)

aar = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="content"]/div/div[2]/div[2]/form/div[2]/div/div/input')))
aar.send_keys("10")

driver.execute_script("scrollBy(0,250)")

#Antal skader
driver.find_element_by_xpath('/html/body/div[6]/div/div[2]/div/div[2]/div[2]/form/div[3]/div/div/div[2]').click()
wait
driver.find_element_by_xpath('/html/body/div[11]/ul/li[3]').click()
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()
time.sleep(1)

#skade 1
driver.find_element_by_xpath('/html/body/div[6]/div/div[2]/div/div[2]/div[2]/form/div[4]/div/div[1]/div/div[2]').click()
wait
driver.find_element_by_xpath('/html/body/div[12]/ul/li[5]').click()
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()
time.sleep(1)


#skade 2
driver.find_element_by_xpath('/html/body/div[6]/div/div[2]/div/div[2]/div[2]/form/div[4]/div/div[2]/div/div[2]').click()
wait
driver.find_element_by_xpath('/html/body/div[13]/ul/li[3]').click()
driver.minimize_window()
driver.maximize_window()
time.sleep(1)
driver.find_element_by_xpath('//*[@id="select2-drop"]').click()
time.sleep(1)


find_daekning = driver.find_element_by_xpath('//*[@id="content"]/div/div[2]/div[2]/form/div[5]/div/button').click()

编辑: 我使用Selenium将其添加到我的代码中:

##### Get Data #####

driver.get("https://forsikringsguiden.dk/#!/bilforsikring/resultatside") 
wait = WebDriverWait(driver,10)
wait
res_element = driver.find_elements_by_xpath('/html/body/div[7]/div/div[2]/div[1]/div[2]/div[2]')

res = [x.text for x  in res_element]

print(res, "\n")
但它没有给我数字,只是一些文字。 这里是结果

['Sortér efter: Forklaring\nGå til selskab\nDin dækning\nkr./år -\nMed
 samlerabat kr./år\nSelvrisiko\nSe detaljer\nSammenlign\nGå til selskab\nDin dækning\nkr./år -\nMed samlerabat kr./år\nSelvrisiko
\nSe detaljer\nSammenlign\nGå til selskab\nDin dækning\nkr./år -
\nMed samlerabat kr./år\nSelvrisiko\nSe detaljer\nSammenlign\n

你能在概览表中给出2-3个公司名称的例子吗?在这里,我检查了其中一个公司的图片,我发现它们都有一个公司ID。第一家公司Alka的ID为25,与.svg图像的结尾相同。我不确定selenium是否有数据抓取功能,比如BS4。一些公司名称是Alka、FDM、PenSam、Tryg等。添加了一些我的实验代码。明白了;你能发布你想要的产品样本吗?你能在概览表中给出2-3个公司名称的例子吗?这里我检查了一个公司的图片,我发现他们都有一个公司ID。第一家公司Alka的ID为25,与.svg图像的结尾相同。我不确定selenium是否具有数据刮取功能,如BS4。一些公司名称是Alka、FDM、PenSam、Tryg等。添加了一些我的实验代码。明白了;你能发布你想要的输出样本吗?