成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

selenium動(dòng)態(tài)數(shù)據(jù)獲取的方法實(shí)現(xiàn)

89542767 / 529人閱讀


  這篇文章主要是闡述了selenium可視化數(shù)據(jù)抓取有效的方法實(shí)現(xiàn),文中根據(jù)舉例編碼講到的十分詳盡,對(duì)大家學(xué)習(xí)培訓(xùn)還是工作具有很強(qiáng)的參照學(xué)習(xí)培訓(xùn)使用價(jià)值,需求的小伙伴們下邊伴隨著小編就來互相學(xué)習(xí)了解一下吧。


  Selenium是一個(gè)自動(dòng)化技術(shù)檢測(cè)工具,運(yùn)用它能夠推動(dòng)電腦瀏覽器實(shí)行特殊動(dòng)作,如鼠標(biāo)點(diǎn)擊、下拉框等操作,同時(shí)也可以獲取電腦瀏覽器現(xiàn)階段獲得界面的程序代碼,保證由此可見即可獲得。對(duì)于有些JavaScript動(dòng)態(tài)性3D渲染的頁(yè)面來說,此種抓取方式非常有效。接下來,就讓我們來感受一下它的強(qiáng)大之處吧。


  webdriver的安裝


  ????selenium安裝


  首先,我們使用selenium進(jìn)行測(cè)試,所以我們得安裝selenium庫(kù)。


  pip install selenium


  ????驅(qū)動(dòng)安裝


  webdriver是瀏覽器對(duì)應(yīng)的驅(qū)動(dòng),我們使用的的瀏覽器有三種谷歌Chrome、微軟Microsoft Edge、還有一個(gè)火狐Firefox,但是我們經(jīng)常使用谷歌Chrome瀏覽器進(jìn)行測(cè)試。現(xiàn)在我們就以Chrome瀏覽器為例下載它對(duì)應(yīng)的chromedriver。


  官網(wǎng):http://chromedriver.storage.googleapis.com/index.html


  注意:


  我們下載chromedriver驅(qū)動(dòng)時(shí),我們要查明瀏覽器的版本,要對(duì)應(yīng)相應(yīng)的版本號(hào)進(jìn)行下載,否則會(huì)報(bào)錯(cuò)。禁止Google瀏覽器更新服務(wù),可以上網(wǎng)查教程。


  ????基本使用


  ????查找節(jié)點(diǎn)


  Selenium可以驅(qū)動(dòng)瀏覽器完成各種操作,比如填充表單、模擬點(diǎn)擊等。比如,我們想要完成向某個(gè)輸入框輸入文字的操作,總需要知道這個(gè)輸入框在哪里吧?而Selenium提供了一系列查找節(jié)點(diǎn)的方法,我們可以用這些方法來獲取想要的節(jié)點(diǎn),以便下一步執(zhí)行一些動(dòng)作或者提取信息。


  獲取節(jié)點(diǎn)的方法:


  find_element_by_id
  find_element_by_name
  find_element_by_xpath
  find_element_by_link_text專門用來定位超鏈接文本(標(biāo)簽)全匹配
  find_element_by_partial_link_text模糊匹配
  find_element_by_tag_name
  find_element_by_class_name
  find_element_by_css_selector


  給個(gè)示例


  from selenium import webdriver
  browser=webdriver.Chrome()
  browser.get('https://www.baidu.com')
  input=browser.find_element_by_id('kw')
  input.send_keys('Python')
  browser.find_element_by_id('su').click()
  #提取頁(yè)面
  print(browser.page_source.encode('utf-8'))
  #提取cookie
  print(browser.get_cookies())
  #提取當(dāng)前請(qǐng)求地址
  print(browser.current_url)
  browser.close()


  運(yùn)行代碼后發(fā)現(xiàn),會(huì)自動(dòng)彈出一個(gè)Chrome瀏覽器。瀏覽器首先會(huì)跳轉(zhuǎn)到百度,然后在搜索框中輸入Python,接著跳轉(zhuǎn)到搜索結(jié)果頁(yè)


  注:當(dāng)我們的chromedriver驅(qū)動(dòng)沒有放置到Chrome瀏覽器路徑時(shí),我們可以使用以下來申明瀏覽器對(duì)象。


   browser=webdriver.Chrome(executable_path="chromedriver安裝路徑")


  方法總結(jié):


  brower.get(url):跳轉(zhuǎn)當(dāng)前url鏈接。


  browser.find_element_by_id('id屬性值'):定位到id屬性值。


  send_keys('輸入關(guān)鍵字'):定位到輸入框后輸入。


  find_element_by_id('id屬性值').click():定位到id屬性值后點(diǎn)擊。


  browser.page_source.encode('utf-8'):獲取當(dāng)前頁(yè)面的源碼。


  browser.get_cookies():提取cookies。


  browser.current_url:獲取當(dāng)前頁(yè)面的url。


  brower.close():關(guān)閉瀏覽器。


  ????執(zhí)行JavaScript


  對(duì)于某些操作,Selenium API并沒有提供。比如,下拉進(jìn)度條,它可以直接模擬運(yùn)行JavaScript,此時(shí)使用execute_script()方法即可實(shí)現(xiàn),代碼如下:


  #document.body.scrollHeight獲取頁(yè)面高度
  from selenium import webdriver
  browser=webdriver.Chrome()
  browser.get('https://36kr.com/')
  #下拉邊框一次性下拉
  browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
  #慢慢的下拉
  for i in range(1,9):
  time.sleep(random.randint(100,300)/1000)
  browser.execute_script('window.scrollTo(0,{})'.format(i*700))


  這里就利用execute_script()方法將進(jìn)度條下拉到最底部。為了模擬人為活動(dòng),我們調(diào)節(jié)了下拉的緩沖時(shí)間。


  我們使用瀏覽器的控制臺(tái)輸入以下代碼也能運(yùn)行。

  window.scrollTo(0,document.body.scrollHeight)

01.png

  切換Frame


  我們知道網(wǎng)頁(yè)中有一種節(jié)點(diǎn)叫作iframe,也就是子Frame,相當(dāng)于頁(yè)面的子頁(yè)面,它的結(jié)構(gòu)和外部網(wǎng)頁(yè)的結(jié)構(gòu)完全一致。Selenium打開頁(yè)面后,它默認(rèn)是在父級(jí)Frame里面操作,而此時(shí)如果頁(yè)面中還有子Frame,它是不能獲取到子Frame里面的節(jié)點(diǎn)的。這時(shí)就需要使用switch_to.frame()方法來切換Frame。示例如下:


  browser.get('https://www.douban.com/')
  login_iframe=browser.find_element_by_xpath('//div[ class="login"]/iframe')
  browser.switch_to.frame(login_iframe)
  browser.find_element_by_class_name('account-tab-account').click()
  browser.find_element_by_id('username').send_keys('123123123')


  首先我們要定位到iframe,然后用switch_to.frame()方法來切換Frame,這時(shí)我們就可以定位到子Frame進(jìn)行有關(guān)操作了。


  ????前進(jìn)后退


  平常使用瀏覽器時(shí)都有前進(jìn)和后退功能,Selenium也可以完成這個(gè)操作,它使用back()方法后退,使用forward()方法前進(jìn)。示例如下:


  import time
  from selenium import webdriver
  browser=webdriver.Chrome()
  browser.get('https://www.baidu.com/')
  browser.get('https://www.taobao.com/')
  browser.get('https://www.python.org/')
  browser.back()
  time.sleep(1)
  browser.forward()
  browser.close()

  這里我們連續(xù)訪問3個(gè)頁(yè)面,然后調(diào)用back()方法回到第二個(gè)頁(yè)面,接下來再調(diào)用forward()方法又可以前進(jìn)到第三個(gè)頁(yè)面。


  ????選項(xiàng)卡管理


  在訪問網(wǎng)頁(yè)的時(shí)候,會(huì)開啟一個(gè)個(gè)選項(xiàng)卡。在Selenium中,我們也可以對(duì)選項(xiàng)卡進(jìn)行操作。示例如下:


  import time
  from selenium import webdriver
  browser=webdriver.Chrome()
  browser.get('https://www.baidu.com')
  browser.execute_script('window.open()')
  print(browser.window_handles)
  browser.switch_to_window(browser.window_handles[1])
  browser.get('https://www.taobao.com')
  time.sleep(1)
  browser.switch_to_window(browser.window_handles[0])
  browser.get('https://python.org')


  這里我們先跳轉(zhuǎn)到百度再打開一個(gè)空白選項(xiàng)卡打印選項(xiàng)卡編號(hào),再跳轉(zhuǎn)到第二個(gè)選項(xiàng)卡也就是這個(gè)空白選項(xiàng)卡打開淘寶,休息一秒,再跳轉(zhuǎn)到第一個(gè)選項(xiàng)卡打開python官網(wǎng)。


  ????配置操作


  selenium有很多配置,下面我舉幾個(gè)常見的。


  options=webdriver.ChromeOptions()
  #無頭模式
  option.add_argument("-headless")
  #設(shè)置代理
  options.add_argument('proxy-server='+'192.168.0.28:808')
  #將瀏覽器最大化顯示
  browser.maximize_window()
  #設(shè)置寬高
  browser.set_window_size(480,800)
  #通過js新打開一個(gè)窗口
  driver.execute_script('window.open("https://www.baidu.com");')
  browser=webdriver.Chrome(chrome_options=options)
  繞過檢測(cè)
  繞過檢測(cè)對(duì)于一些網(wǎng)站的自動(dòng)化反爬很管用。
  #設(shè)置屏蔽
  options=webdriver.ChromeOptions()
  options.add_argument('--disable-blink-features=AutomationControlled')
  browsers=webdriver.Chrome(chrome_options=options)
  browsers.get('https://bot.sannysoft.com/')
  網(wǎng)站:https://bot.sannysoft.com/

  我們沒設(shè)置繞過檢測(cè)


  我們?cè)O(shè)置了繞過檢測(cè)后


  到此為止,小編就給大家介紹完畢了,希望可以為大家?guī)韼椭?/p>

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/128004.html

相關(guān)文章

  • Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---37、動(dòng)態(tài)渲染頁(yè)面抓取:Selenium

    摘要:不過動(dòng)態(tài)渲染的頁(yè)面不止這一種。再有淘寶這種頁(yè)面,它即使是獲取的數(shù)據(jù),但是其接口含有很多加密參數(shù),我們難以直接找出其規(guī)律,也很難直接分析來抓取。我們用一個(gè)實(shí)例來感受一下在這里們依然是先打開知乎頁(yè)面,然后獲取提問按鈕這個(gè)節(jié)點(diǎn),再將其 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---38、動(dòng)態(tài)渲染頁(yè)面抓取:Spla...

    zhjx922 評(píng)論0 收藏0
  • 動(dòng)態(tài)HTML介紹 & Selenium PhantomJS

    摘要:一個(gè)網(wǎng)站使用的特征就是源代碼里包含了入口比如如果你在一個(gè)網(wǎng)站上看到了,那么采集這個(gè)網(wǎng)站數(shù)據(jù)的時(shí)候要格外小心。直接點(diǎn)擊下拉框中的選項(xiàng)不一定可行。未審核初審?fù)ㄟ^復(fù)審?fù)ㄟ^審核不通過專門提供了類來處理下拉框。 JavaScript JavaScript 是網(wǎng)絡(luò)上最常用也是支持者最多的客戶端腳本語(yǔ)言。它可以收集 用戶的跟蹤數(shù)據(jù),不需要重載頁(yè)面直接提交表單,在頁(yè)面嵌入多媒體文件,甚至運(yùn)行網(wǎng)頁(yè)游戲。...

    Lsnsh 評(píng)論0 收藏0
  • Python 從零開始爬蟲(八)——動(dòng)態(tài)爬取解決方案 之 selenium

    摘要:然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅(qū)動(dòng)瀏覽器獲得的解析的能力。所以說這貨在動(dòng)態(tài)爬取方面簡(jiǎn)直是掛逼級(jí)別的存在,相較于手動(dòng)分析更簡(jiǎn)單易用,節(jié)省分析打碼時(shí)間。一旦設(shè)置了隱式等待時(shí)間,它的作用范圍就是對(duì)象實(shí)例的整個(gè)生命周期。 selenium——自動(dòng)化測(cè)試工具,專門為Web應(yīng)用程序編寫的一個(gè)驗(yàn)收測(cè)試工具,測(cè)試其兼容性,功能什么的。然而讓蟲師們垂涎的并不是以上的種種,而是其通過驅(qū)動(dòng)瀏...

    fobnn 評(píng)論0 收藏0
  • 【小白+python+selenium庫(kù)+圖片爬取+反爬+資料】超詳細(xì)新手實(shí)現(xiàn)(01)webdriv

    摘要:且本小白也親身經(jīng)歷了整個(gè)從小白到爬蟲初入門的過程,因此就斗膽在上開一個(gè)欄目,以我的圖片爬蟲全實(shí)現(xiàn)過程為例,以期用更簡(jiǎn)單清晰詳盡的方式來幫助更多小白應(yīng)對(duì)更大多數(shù)的爬蟲實(shí)際問題。 前言: 一個(gè)月前,博主在學(xué)過python(一年前)、會(huì)一點(diǎn)網(wǎng)絡(luò)(能按F12)的情況下,憑著熱血和興趣,開始了pyth...

    Half 評(píng)論0 收藏0
  • 在headless模式下運(yùn)行selenium

    摘要:而在不久前宣布支持模式而后跟隨的新聞再次勾起我無盡的回憶。那么我們就來談?wù)勗诤蜑g覽器不原生支持模式下如何使用來實(shí)現(xiàn)模式進(jìn)行動(dòng)態(tài)數(shù)據(jù)的抓取。比較常見的例子在中進(jìn)行轉(zhuǎn)發(fā)。下面我們進(jìn)行測(cè)試發(fā)現(xiàn)其可以正常的運(yùn)行。 原文地址: http://52sox.com/python-use-h... 在Python中進(jìn)行瀏覽器測(cè)試時(shí),一般我們會(huì)選擇selenium這樣的庫(kù)來簡(jiǎn)化我們工作量。而有些時(shí)候,為...

    MoAir 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<