找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4490|回复: 14

[求助] python selenium 无法获取radio信息

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx 发表于 2019-11-19 16:28:47 | 显示全部楼层 |阅读模式
本帖最后由 sigerclx 于 2019-11-19 16:30 编辑
  1. #前面是登录客如云的商家后台,然后下面的是转向“报表”链接
复制代码

#前面是登录客如云的商家后台,然后下面的是转向“报表”链接
browser.switch_to.parent_frame()
browser.maximize_window()
browser.get('http://b.keruyun.com/bui-link/#/mind/report/bizSurveyRes/index')
browser.implicitly_wait(8)
try:
    info = browser.find_elements_by_class_name("radio")
    print("radio is get")
except NoSuchElementException:
    print ('error')
    sys.exit(0)
print("info is ",info)


运行结果打印了:radio is get
info is []



我的问题是为什么搜索不到radio呢?为什么搜索结果是空?如何才能找到radio,并且按自己需要选择呢?

以下是页面radio附近的源码:
  1. <div class="search-column" style="display: inline-block;">
  2.                 <span class="search-type">选择时间</span>
  3.                 <label class="radio"><span></span><input type="radio" name="queryType" value="1">营业日期(下单日)</label>
  4.                 <label class="radio"><span></span><input type="radio" name="queryType" value="2">自然日(下单日)</label>
  5.                 <span class="time-picker">
  6.                     <div class="search-box select-day">
  7.                         <input name="startDate" type="text" class="form-control datepicker-start" id="date-start" data-for-element="date-end" placeholder="开始日期" readonly disabled>
  8.                         <button type="button" class="close">×</button>
  9.                     </div>
  10.                     <div class="search-box-time" style="margin-right: 10px;">
  11.                         <input type="text" class="form-control timepicker-start"  name="startTime">
  12.                     </div>
  13.                     <div class="search-box select-day">
  14.                         <input name="endDate" type="text" class="form-control datepicker-end" id="date-end" data-for-element="date-start" placeholder="结束日期" readonly disabled>
  15.                         <button type="button" class="close">×</button>
  16.                     </div>
  17.                     <div class="search-box-time">
  18.                         <input type="text" class="form-control timepicker-end"  name="endTime">
  19.                     </div>
  20.                 </span>
  21.                 <label class="radio radio-check"><span></span><input type="radio" name="queryType" value="3" checked>今天</label>
  22.                 <label class="radio"><span></span><input type="radio" name="queryType" value="4">昨天</label>
  23.                 <label class="radio"><span></span><input type="radio" name="queryType" value="5">最近七天</label>
  24.                 <label class="radio" style="margin-right: 14px;"><span></span><input type="radio" name="queryType" value="6">最近一个月</label>
  25.             </div>
复制代码


回复

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-20 10:20:28 | 显示全部楼层
我觉得你是要报表信息而不是radio信息,如果选了radio没点提交之类就有数据的应该是ajax,直接抓json吧,比抓table简单。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx  楼主| 发表于 2019-11-23 08:59:12 | 显示全部楼层
谢谢提醒,我是希望获得报表,但也希望学会用python找到radio,这个问题的学习意义对我这样的小白来说更重要
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-23 12:46:32 | 显示全部楼层
本帖最后由 sheeboard 于 2019-11-23 12:50 编辑

选中radio是要click的,如果是ajax的话会自动提交(页面程序侦听事件来实现自动提交请求),如果不是需点submit按钮来提交,然后页面会刷新出现table,再抓取table数据。ajax的话是构建请求,也就是xhr包,服务方回应包里会包含json,解析一下就是你要的数据。小白的话稍微看点html5的知识以方便分析和抓取网页。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx  楼主| 发表于 2019-11-25 08:25:18 | 显示全部楼层
本帖最后由 sigerclx 于 2019-11-25 09:04 编辑

谢谢回复,我明白,radio需要点击,后面我有点击的代码,问题是找到的radio是空,无法点击啊。。。。
但是 下面的代码可以实现找到并点击radio切换,这是为什么呢?附上代码:

  1. from selenium import webdriver
  2. from time import sleep
  3. # 打开百度文库,切换radio按钮
  4. driver = webdriver.Chrome()
  5. driver.maximize_window()

  6. driver.get("http://wenku.baidu.com")
  7. driver.implicitly_wait(8)

  8. for i in driver.find_elements_by_class_name("type-check"): # 实现遍历点击所有的radio  
  9.      print(i)
  10.      sleep(3)
  11.      i.click()
复制代码


回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx  楼主| 发表于 2019-11-25 09:02:13 | 显示全部楼层
但是,下面的代码能找到radio,实现点击切换,这是为什么呢?
  1. from selenium import webdriver
  2. from time import sleep
  3. # 打开百度文库,切换radio按钮
  4. driver = webdriver.Chrome()
  5. driver.maximize_window()

  6. driver.get("http://wenku.baidu.com")
  7. driver.implicitly_wait(8)

  8. for i in driver.find_elements_by_class_name("type-check"): # 实现遍历点击所有的radio  
  9.      print(i)
  10.      sleep(3)
  11.      i.click()
复制代码
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-25 16:19:37 | 显示全部楼层
如果可以的话发个测试用登录帐号。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx  楼主| 发表于 2019-11-29 14:37:35 | 显示全部楼层
sheeboard 发表于 2019-11-25 16:19
如果可以的话发个测试用登录帐号。

你好,感谢回复。我有账号,不是测试的,可以登入。如果可以的话,能给我留个邮箱吗?我把登录地址,账号密码发过去。我的邮箱2000clx@126.com
回复 支持 反对

使用道具 举报

0

主题

956

帖子

956

积分

圣骑士

积分
956
sheeboard 发表于 2019-11-29 17:46:29 | 显示全部楼层
发邮件了,回帐号密码到邮箱里。
回复 支持 反对

使用道具 举报

0

主题

10

帖子

10

积分

贫民

积分
10
sigerclx  楼主| 发表于 2019-11-30 10:48:50 | 显示全部楼层
sheeboard 发表于 2019-11-29 17:46
发邮件了,回帐号密码到邮箱里。

好的,账号密码已经发送。谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表