概述:
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日趨勢