m0_57965808 2021-10-18 12:39 采纳率: 90.9%
浏览 113
已结题

Python selenium定位不到网页元素

爬取某文库,代码如下:

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://wenku.baidu.com/view/83a62ad5316c1eb91a37f111f18583d048640f3c')
time.sleep(5)
elements=driver.find_elements_by_class_name('read-all')#继续阅读
element=elements[0]
#print(element)
element.click()
time.sleep(5)
yhm=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__footerULoginBtn')#用户名登录
#print(yhm)
yhmd=yhm[0]
yhmd.click()
yh=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__userName')#用户名
#print(yh)
yh=yh[0]
yh.send_keys('用户名')
mm=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__password')#密码
mm=mm[0]
mm.send_keys('密码')
dl=driver.find_elements_by_css_selector('#TANGRAM__PSP_11__submit')#点击登录按钮
dl=dl[0]
dl.click()
time.sleep(10)
gk=driver.find_elements_by_class_name('close-btn default-bg')#关闭广告
gkc=gk[0]
gkc.click()
zc=driver.find_elements_by_class_name('read-all')#再次点击继续阅读
zcc=zc[0]
zcc.click()
xt=driver.find_elements_by_class_name("reader-word-layer")#爬取文章内容
for i in xt:
    print(i.text)

我搜不到的那个元素为登录完毕后弹出的广告关闭按钮,在代码的26行。另外因为再输入完用户名密码登录之后会有一个旋转图片的验证,我都是手动验证的。所以我在25行设置了一个time.sleep,也可以给后面的元素一点加载时间。
另外我也没找到frame。所以到底是什么原因导致了这样的错误,希望有懂的人指点一下。

  • 写回答

1条回答 默认 最新

  • 江天暮雪丨 2021-10-18 13:57
    关注

    class name 修改为 close-btn.default-bg
    gk=driver.find_elements_by_class_name('close-btn.default-bg')#关闭广告

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,