概述:
python通过selenium爬取数据是很多突破封锁的有效途径。但在使用selenium中会遇到很多问题,本文就通过一问一答的形式来通熟易懂的普及如何通过selenium执行javascript程序,进而获取动态执行后的网页。如果你喜欢,欢迎转发本文。
python爬虫编程:用selenium执行javascript出错了,该咋改?
问题:
小明开始学习python爬虫变成了,仿佛整个互联网的数据都快被他纳入囊中了。今天,他又试图完成一个高难度动作,他想让selenium中抓取到以下HTML后,并自动执行js脚本,模仿鼠标自动执行一个点击动作。但令他很失望的是,居然,居然,没用!
这是他执行的代码。
browser.execute_script("document.getElement(By.xpath(\"//div[@class='vbseo_liked']/a[contains(@onclick, 'return vbseoui.others_click(this)')]\").click()")
它没用,没有反应。究竟做错了什么?
Python大大的答案:
要点回答:
使用selenium查找元素并将其传递execute_script()给单击:
link = browser.find_element_by_xpath('//div[@class="vbseo_liked"]/a[contains(@onclick, "return vbseoui.others_click(this)")]')browser.execute_script('arguments[0].click();', link)
如果要从头解决这问题,那么以下就是需要了解它的一系列事情:
如何使用JavaScript模拟点击?
这就是我做的东西。这很简单,但它有效:
function eventFire(el, etype){ if (el.fireEvent) { el.fireEvent('on' + etype); } else { var evObj = document.createEvent('Events'); evObj.initEvent(etype, true, false); el.dispatchEvent(evObj); }}
用法:
eventFire(document.getElementById('mytest1'), 'click');
如何在Python里进行模拟点击呢?首先制定一个自定义的预期条件,等待元素被“执行”:
定义完毕后,如何在程序里调用这个类呢?看看以下代码:
看,如何在python里通过selenium来爬取数据就是这么简单。要点掌握好,开始编制自己的爬虫吧。
-------------------------------节目预告
这就是我
韩国/歌舞
28简介风靡全球的SM梦工厂(SM TOWN)的韩国偶像,他们大胆追梦,完成青春的无限可能!安七炫、宝儿、东方神起、SUPER JUNIOR、少女时代、SHINee、f(x)等心路历程全纪录。 本片忠实地收录SM梦工厂旗下艺人于世界首屈一指的演唱会圣地:纽约麦迪逊花园广场准备登台演出前的真实画面。 这是韩国首部纪录实况的记录片式演唱会电影,它展现站在舞台上实现梦想的每个表演者不为人知的一面,是一篇诉说年轻艺人艰苦奋斗与光辉荣耀的感人故事。 《IAM--这就是我》是一部纪录了SM公司艺人奋斗史的青春传记,影片向观众展示了SM公司艺人华丽的舞台演出以及平凡的日常生活,观众们可以通过这部影片看到SM公司艺人们为了在台上的几分钟而在台下所付出的努力和汗水。 一名SM公司工作人员表示,《I AM--这就是我》可以说是至今为止最完整纪录SM公司艺人生活和工作的作品。 这部电影记录包括KANG TA ,BOA,东方神起,SUPERJUNIOR,少女时代,SHINEE,F(x)等偶像从选拔开始,步步成长为全民偶像的历程。电影展示了偶像们未红时的青涩,也表现出他们青少时候的刻苦训练,同时展示他们在拓展演艺事业的道路上克服内心的迷惘,勇敢地坚定自己的事业,他们是亚洲最敬业的偶像联盟--SM家族,"是明星,是朋友,也是家人!"《I AM -这就是我》带来一场无约束的热血观影,感受至真至纯的青春。演员表安七炫饰 自己宝儿饰 自己东方神起百科目录1.创作背景2.专辑曲目剧照百度指数 244查看30日趋势