前言:
今天看官们对“selenium定位隐藏元素”大概比较注意,姐妹们都想要分析一些“selenium定位隐藏元素”的相关文章。那么小编同时在网上汇集了一些对于“selenium定位隐藏元素””的相关资讯,希望我们能喜欢,我们一起来了解一下吧!背景介绍
我们知道使用selenium可以很方便地从html页面中提取想要的数据,但在实际开发过程中,发现页面中初始数据是隐藏的,无法直观查询得到,本文介绍如何通知动态修改标签状态完成数据的爬取。如下图所示操作,其电话号码只有当鼠标hover over后,才会显示对应的电话号码:
跟踪hover over后对应页面元素变化:
发现在hover后,存在一个新增的标签(class='tip')元素,如上图红框所示,其完整的电话号码就是其中;自然地如果在页面打开后,能够触发该标签的显示,则可以很方便地获取其中电话号码文本信息。
源码实践
在上节的html页面元素里,其中style=“display:none”,默认不会显示,自然地可以通过获取到所有(class='tip')元素列表(共20个),并设置其style.display=‘block’以强行显示,关键代码如下:
for j in range(20): try: num = str(j) js = "document.getElementsByClassName(\"tip\")[" + num + "].style.display='block';" browser.execute_script(js) except Exception as e: print(j)
这样一来,直接获取指定标签里的文本则水到渠成,关键代码如下:
rows = browser.find_elements(By.CLASS_NAME, 'dlshouwen-grid-row') for row in rows: tds = row.find_elements_by_tag_name('td') x += 1 print("%d\t%s\t%s\t%s\t%s" % ( x, tds[3].text, tds[5].text, tds[6].find_elements_by_tag_name('span')[1].text, tds[8].text))
标签: #selenium定位隐藏元素