利用python爬蟲技術動態爬取地理空間資料雲中的元資料(selenium)
阿新 • • 發佈:2018-12-09
python爬取地理空間資料雲selenium動態點選
爬取的網址秀一下:
爬取的資訊是什麼呢?
這個資訊的爬取涉及到右邊按鈕的點選,這屬於動態爬取的範疇,需要用到selenium
好了,那麼開始寫程式碼吧
首先匯入selenium
from selenium import webdriver
然後從網站上下載火狐瀏覽器自動點選的驅動,隨便放一個路徑,後面會用到
驅動長啥樣?張下面這個樣子
當然火狐瀏覽器別忘了下哦(小貓貼心提醒)
接下來是在程式碼中載入驅動
driver = webdriver.Firefox(executable_path='C:/install/python36/geckodriver')
可以看到有個executable_path,這個就是你放驅動的位置,放哪裡都行。
然後F12解析該網頁,找到需要點選的元素,可以利用
driver.find_element_by_id
driver.find_element_by_name
driver.find_element_by_link_text
driver.find_element_by_class_name
driver.find_element_by_xpath
等
等
等,
這裡我用Xpath找到要點選的元素
list0=driver.find_elements_by_xpath("//tbody/tr[@class='dlv-row dlv-row-0']/td[last()]/div/div/a[1]")
不過這裡我找到的是elements,是相同Xpath的list哦,不是單個元素哦
然後遍歷list中的每一個元素,點選(左鍵單擊)並獲取當前的網頁,實現的程式碼很簡單:
for li in list0:
li.click()
html = driver.page_source
data = str(pq(html))
還可以用BeautifulSoup解析獲取的網頁,很輕鬆很簡單
soup = BeautifulSoup(data, 'html.parser')
至於跳轉換頁相同的原理是相同的,這裡就不贅述了
哦,對了,還要讓這個稍微休眠一會,不然爬了一點資料就停止爬了
實現的方式有多種:
driver.implicitly_wait(30)
time.sleep(1)
爬出的資料是這樣子的