python自动点击网页按钮_Python+Selenium使用(二)- 自动点击下一页

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-24 07:12   43   0

8d988331350e922b66d3fe0399b0edba.png

继续上一篇:

橘猫吃不胖:Python+Selenium使用(一)zhuanlan.zhihu.com
4ff10ef2142a3ebded32cc267e245d83.png

上一篇,获取了百度搜索后的结果页面,但是搜索结果又很多页,这里就获取下一页按钮,并点击它。


现在浏览器上,找到下一页按钮:

eed42140f8e841fa363702423803926b.png
    btn = driver.find_element_by_css_selector('div.page-inner > a.n')
    print(btn.get_property('href'))    
    btn.click()

这里,就是用css来定位了“下一页”按钮,运行后,就可以看到自动切换到了下一页

顺便记录一个问题,就是css selector,貌似不能跨层级,“div.page-inner > a.n”

一开始想用div的id去找,但是一直找不到

3be46cc95e01fb623eeabc2d3eb71a9a.png

后来改了这个page_inner就可以了

然后,就想多点几次,但是好像哪里有问题,只在第一页、第二页切换

flag = 1
while  flag<10:
    btn = driver.find_element_by_css_selector('div.page-inner > a.n')
    print(btn.get_property('href'))    
    btn.click()
    time.sleep(random.randint(1,9))                                      
    flag += 1

看了下HTML

f0d03a83235996bb3161fa309a50ddbd.png

当切换到下一页的时候,上一页的class也是n

c98bda33c172c576db0d44eb7896a1f5.png

然后,换了一下选择器的写法

flag = 1
while  flag<10:
    btn = driver.find_element_by_css_selector('a.n:last-child')
    print(btn.text, ':', btn.get_property('href'))    
    btn.click()
    time.sleep(random.randint(5,9))                                      
    flag += 1

这下就可以了

关于选择器可以看看这个:CSS 选择器参考手册

现在是这样子的,每次页面更新后,我是手工滑动到页面的最下面,看页面切换是否一致

有点儿麻烦,如果可以自动滑动到下面就好了

滚动页面

selenium中没有直接操作页面滚动的方法,但是我们可以通过调用JS的方式来实现

driver.execute_script('window.scrollBy(0,200)')

这样就可以滚动200个单位,应该是像素

当然,也可以让页面滚动到我们想要看到的元素那里

    btn = driver.find_element_by_css_selector('a.n:last-child')
    
    driver.execute_script("arguments[0].scrollIntoView();",btn)

上面,我们获取了“下一页”按钮,这里,可以直接滚动到“下一页”按钮可见

9389c6aada90d5ea7d407bbdc506d11b.png

让页面滚动,还有一个原因,现在很多页面都是动态加载,如果你的页面不滚动,某些元素就不会加载出来,直接去定位的话,也找不到这个元素

所以,才会需要页面来滚动

除了上面说的按照像素来滚动,滚动到某元素可见,还可以直接根据页面的高度来滚动

driver.execute_script("window.scrollTo(0,document.body.scrollHeight)")

0e25807dcb78ee9a7caafdaf158edb5d.png

如果页面动态加载,高度不断变化,这里可能还会有问题,这里后面具体场景再确认一下

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP