使用内部滚动条滚动

时间:2019-10-25 18:58:59

标签: python-3.x selenium-chromedriver

我有一个要抓取的网站,需要滚动浏览网页上的表格的水平方向(最右边)和垂直方向(最底部)。我正在使用Python3,Selenium和Chrome驱动程序。

我可以抓取表格数据,但是只能抓取到网页上可见的数据。当我检查网页时,找不到任何滚动信息。

在线研究我已经看到了使用Selenium滚动的各种方法,甚至可以通过xpath找到然后滚动。到目前为止,我还没有运气,但是可能做错了。

这是我尝试过的示例,但无法正常工作:

html=browser.find_element_by_xpath('/html/body/form/div[3]/div[2]/div/div[2]/div/div[2]')    
html.send_keys(Keys.END)

这会从表中抓取没有问题的行(但只会加载页面加载时网页上可见的行。如果我一直向下滚动并重新运行此代码,则会从其抓取整个表的内容满载)

for tr in browser.find_elements_by_xpath('/html/body/form/div[3]/div[2]/div/div[2]/div/div[2]'):
        tds = tr.find_elements_by_tag_name('td')
        action_log = ([tr.text for tr in tds])

我只想能够一直垂直滚动到表格底部,并一直水平滚动到我能做到的最大程度(页面加载后仅一次)。同样,在网页上的表格内滚动-不在Chrome本身内。请注意,我的表格数据大小将更改。

1 个答案:

答案 0 :(得分:0)

我一直在梳理该站点以弄清楚如何滚动,最后最终使用了它,效果很好(因为该站点已经获取了所有数据)。需要注意的是,这是在滚动网页底部而不是Chrome本身的表格元素。虽然最大化窗口时效果最佳。

bg = browser.find_element_by_xpath('/html/body/form/div[3]/div[2]/div/div[2]/div/div[2]/div[4]/div[4]')
for _ in range(3):
        bg.send_keys(Keys.END)
        time.sleep(.5)