python webdrive的问题,求解答

qq_15738501 2017-06-23 10:07:57
要爬取一个网站的数据,想要实现翻页功能,但是特殊之处在于翻页网站并不会变化,通过查找元素找到了下一页的源码如下:

我想通过click()实现翻页: driver.find_element_by_class_name("next turn_page").click(),但是报错,应该是定位失败。在网上查了好久了,一直没找到解决方法,本来以为是内嵌网页的问题,结果不是,求大神解答!不胜感激!
...全文
429 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_15738501 2017-12-27
  • 打赏
  • 举报
回复
发现问题所正在了,下一页按钮元素的class是'next turn_page', 这表示该元素拥有链各个class,'next' 和 'turn_page'。按class = 'next'或者class='turn_page'进行查找都行,而我是将'next turn_page'作为一个class进行查找,自然会无法定位到
chuifengde 2017-06-24
  • 打赏
  • 举报
回复
可能网址登录跟验证有关,无法进去测试 你先试试不要click,获取其内容试试,另外用模块time.sleep尽量停留点时间,以备drive加载完整个页面
chuifengde 2017-06-24
  • 打赏
  • 举报
回复
qq_15738501 2017-06-24
  • 打赏
  • 举报
回复
恩好,我这个定位翻页的语句应该是没写错把,是应该click这个元素吧。
qq_15738501 2017-06-23
  • 打赏
  • 举报
回复
代码如下:
# coding = utf-8
import xlwt
from bs4 import BeautifulSoup
from selenium import webdriver
import os

#登录并通过浏览器进入待爬页面
driver = webdriver.Firefox()
driver.get("https://login.alibaba-inc.com/verification/smsOrToken.htm?BACK_URL=http%3A%2F%2Fabc.aliyun-inc.co"
"m%2F&CONTEXT_PATH=%2F&CLIENT_VERSION=0.3.9&APP_NAME=aliyun-business-center&CANCEL_CERT=true")
os.system('pause')
driver.switch_to_window(driver.window_handles[-1]) # 获取当前打开窗口句柄

#输入待爬取页数
page = input('请输入待爬取页数:')

#开始循环爬取
row = 1 #初始化写入元素的行
book = xlwt.Workbook() #打开一个excel
sheet1 = book.add_sheet('sheet1', cell_overwrite_ok=True)
heads = ['任务分类ID', '任务分类名称', '任务ID', '任务名称', '分发UID', '创建时间', '任务状态', '执行时间',
'完成时间', '责任人姓名', '责任人工号', '所属分组ID', '所属分组名称', '所属部门ID', '所属部门名称']
print(u'\n准备将数据存入表格...')
for x in range(int(page)):
# 爬取数据对应的html

soup = BeautifulSoup(driver.page_source, 'html.parser')
content = soup.find_all('td',
class_=['td-0', 'td-1', 'td-2', 'td-3', 'td-4', 'td-5', 'td-6', 'td-7', 'td-8', 'td-9',
'td-10', 'td-11', 'td-12', 'td-13', 'td-14'])
#将信息放入一个list中,创建new_list(方便后续存入excel)(语法糖)
data_list=[]
for data in content:
if data.text =='':
data_list.append(' ')
else:
data_list.append(data.text)
new_list=[data_list[i:i+12] for i in range(0,len(data_list),12)]

#数据存入excel表格
ii=0
#写入表头
for head in heads:
sheet1.write(0,ii,head)
ii+=1
#写入表元素
for list in new_list:
col=0
for data in list:
sheet1.write(row,col,data)
col+=1
row+=1
driver.find_element_by_class_name("next turn_page").click()
book.save('D:\研究生\实习\捷云\授权服务中心任务完成报表.xls')
print(u'\n录入成功!')

网页的源码如下:


劳烦您看下,我是爬虫初学者
chuifengde 2017-06-23
  • 打赏
  • 举报
回复
给出你的代码

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧