我正在尝试从网页上抓取动态内容。该页面显示了前10个元素,然后我必须单击“下一步”按钮以访问下10个元素,依此类推。单击按钮可以正常工作。但是,此后,单击按钮后,它仅返回空列表。
我想获取以下元素的内容:
//*[@id="bt-collapse-442112-slider"]/div[1]/div/div/div[1]/table/tbody/tr[1]/td[3]/div/h3
我注意到第一个div的属性“ data-currentslidecount”在开始时为“ 10”,但是每次单击按钮时都会添加10。
我的初始代码如下:
> for a in range(100):
> WebDriverWait(driver, mywaits).until(EC.presence_of_element_located((By.XPATH,
> '//*[@id="bt-collapse-442112-slider"]/div[1]')))
> print(driver.find_element_by_xpath('//*[@id="bt-collapse-442112-slider"]/div[1]/div/div/div[1]/table/tbody/tr[1]/td[3]/div/h3').text)
> WebDriverWait(driver, mywaits).until(EC.element_to_be_clickable((By.XPATH,
> '//*[@id="bt-collapse-442112-slider"]/div[1]/button[2]')))
> button = driver.find_element_by_xpath('//*[@id="bt-collapse-442112-slider"]/div[1]/button[2]')
> button.click()
> button_count += 1
> print(button_count) driver.close()
尝试寻找解决方案时,我发现,将内容嵌入到iframe中时经常会发生此问题,并且需要切换框架以获取动态内容。但是,就我而言,似乎没有iframe。
此外,我尝试使用find_element_by_css_selector
而不是by_xpath,因为我认为我可以像这样访问div,甚至可以遍历幻灯片数。但是,`
find_element_by_css_selector(div[data-currentslidecount="10")
产生语法错误。我没有为此特定的CSS选择器在线找到解决方案,而且,我不太希望这将解决我的问题。
编辑:
这是HTML:
<div class="bt-slider row slick-initialized slick-slider" data-allitemcount="4184" data-currentslidecount="10"><button type="button" class="slick-prev slick-arrow slick-disabled" aria-disabled="true" style="display: block;"><span class="bab-slick-arrow-text">Zurück</span></button>
<div class="slick-list draggable">
<div class="slick-track" style="opacity: 1; width: 2264px; left: 0px;">
<div class="bt-slide col-xs-12 bt-standard-content slick-slide slick-current slick-active" data-slick-index="0" aria-hidden="false" style="width: 1132px;" tabindex="-1">
<table class="table bt-table-data">
<thead>
<tr>
<th>
<p>Veröffentlichung</p>
</th>
<th>
<p>Sitzung</p>
</th>
<th>
<p>Beschreibung</p>
</th>
</tr>
</thead>
<tbody>
<tr>
<td data-th="04.02.2019">
<p>
04.02.2019<br>Montag</p>
</td>
<td data-th="Sitzung">
<p>19/78</p>
</td>
<td data-th="Beschreibung">
<div class="bt-documents-description">
<h3>
78. Sitzung, 19. Wahlperiode, 01.02.2019</h3>