龙空技术网

使用selenium爬取隐藏数据-实践

加权不平均 99

前言:

今天看官们对“selenium定位隐藏元素”大概比较注意,姐妹们都想要分析一些“selenium定位隐藏元素”的相关文章。那么小编同时在网上汇集了一些对于“selenium定位隐藏元素””的相关资讯,希望我们能喜欢,我们一起来了解一下吧!

背景介绍

我们知道使用selenium可以很方便地从html页面中提取想要的数据,但在实际开发过程中,发现页面中初始数据是隐藏的,无法直观查询得到,本文介绍如何通知动态修改标签状态完成数据的爬取。如下图所示操作,其电话号码只有当鼠标hover over后,才会显示对应的电话号码:

hover over后显示电话号码

跟踪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定位隐藏元素