selenium獲取動態網站資料
阿新 • • 發佈:2018-11-21
一、安裝
pip install selenium
二、下載瀏覽器驅動
谷歌瀏覽器驅動下載地址:http://npm.taobao.org/mirrors/chromedriver/
火狐瀏覽器驅動下載地址:http://npm.taobao.org/mirrors/geckodriver/
檢視谷歌瀏覽器版本:幫助 --> 關於 Google Chrome
三、爬取今日頭條資料
進入到今日頭條主頁,點選 科技 ,到對應的頁面爬取標題和url,但是這個頁面需要將滾輪滑倒底部,才能載入下面的內容,所有需要執行js程式碼
#!/usr/bin/env python #-*- coding:utf-8 -*- from selenium import webdriver from bs4 import BeautifulSoup import time,xlwt #1、模擬瀏覽器找到訪問位置 driver = webdriver.Chrome() #例項化一個初始瀏覽器 url = "https://www.toutiao.com" driver.get(url=url) #以get方式傳送一個url driver.implicitly_wait(10) #隱形等待,確保節點都完全加載出來 driver.find_element_by_link_text('科技').click() #獲取a標籤超連結文字 driver.implicitly_wait(10) #2、獲取原始碼,標識滾動條位置的程式碼 for i in range(3): js = 'var q = document.documentElement.scrollTop=' + str(i*3000) driver.execute_script(js) #執行js程式碼 time.sleep(2) html_doc = driver.page_source #獲取網頁原始碼 #3、解析內容 data = [] soup = BeautifulSoup(html_doc,'html.parser') res = soup.select('.wcommonFeed ul li .rbox-inner .title-box a') for i in range(len(res)): if 'http' not in res[i]['href']: data.append([res[i].text, url + res[i]['href']]) else: data.append([res[i].text, res[i]['href']]) #4、將資料寫入到excel中 newTable = 'test2018.xls' book = xlwt.Workbook(encoding='utf-8') #建立excle表格 boot_sheet = book.add_sheet('今日頭條') #新增工作薄 headData = ['標題','url地址'] #寫入標題 for colnum in range(2): # 2為幾列 boot_sheet.write(0,colnum,headData[colnum]) #寫入內容 index = 1 for content in range(len(data)): for colnum in range(2): boot_sheet.write(index,colnum,data[content][colnum]) index += 1 book.save(newTable) driver.quit() #退出
效果圖:
二、實現新浪部落格的動態登陸
輸入使用者名稱和密碼後爬取對應的頁面內容
#!/usr/bin/env python #-*- coding:utf-8 -*- from selenium import webdriver import time browser = webdriver.Chrome() #例項化一個初始瀏覽器 browser.get('http://login.sina.com.cn') # 訪問網站 elem_user = browser.find_element_by_name('username') # 定位到使用者名稱元素 elem_user.send_keys('username') # 賬號使用者名稱 elem_pwd = browser.find_element_by_name("password") elem_pwd.send_keys('password') # 賬號密碼 elem_sub = browser.find_element_by_xpath("//input[@class='W_btn_a btn_34px']") # 定位到提交元素 elem_sub.click() # 點選登陸 time.sleep(10) # 等待10s current_url = browser.current_url # 當前頁面的url print(current_url) # 跳轉到要爬取的頁面 browser.get('http://k.sina.com.cn/article_5807684875_m15a2a3d0b00100i7hw.html?cre=mysinapc&mod=f&loc=11&r=15&doct=0&rfunc=47') time.sleep(10) html = browser.page_source # 獲得當前頁面的html字串 print(html) browser.quit()
詳情請參考官網地址:https://selenium-python.readthedocs.io