python獲取動態網站上面的動態加載的數據(selenium+Firefox)


最近突然想到以前爬取百度學術上的參考文獻,大家可以看一下以前我的寫的博客:http://www.cnblogs.com/ybf-yyj/p/7351493.html,但是如果利用這個方法,太痛苦了,需要人工來復制粘貼,所以這里來介紹用selenium來實現這個功能,貼上代碼:

#-*- coding:utf-8 -*-
from selenium import webdriver
import time
from bs4 import BeautifulSoup
#拼接url
titlename='Application of biosorption for the removal of organic pollutants: a review'
url_name=titlename.split(' ')
url='http://xueshu.baidu.com/s?wd='+'+'.join(url_name)
#打開Firefox
diver=webdriver.Firefox()
diver.get(url)
#防止引用太多,不斷click,直到參考文獻下不存在‘加載更多’
try:

    for i in range(0,50):
        # 等待網站加載完成
        time.sleep(0.2)
        diver.find_elements_by_class_name('request_situ')[1].click()
except:
    print '********************************************************'
#等到加載完成獲取網頁源碼
time.sleep(10)
#使用BeautifulSoup獲取參考文獻
soup=BeautifulSoup(diver.page_source,'lxml')
items=soup.find('div',{'class':'con_reference'}).find_all('li')
for i in items:
    print i.find('a').get_text()
#關閉網頁
diver.close()

注意:

    代碼中紅色標注,本人因為這個錯誤,弄了半天

    本人遇到一個問題,每次第一次爬取,click事件不響應,利用斷點查看發現又可以了,后面就都可以了,這個我要不知道為什么會這樣

    chrome瀏覽器click事件也執行不了

如果大家不想看到瀏覽器出現,可以使用diver=webdriver.PhantomJS()替代diver=webdriver.Firefox()

以上的基礎在於安裝了PhantomJS、geckodriver.exe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM