<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一篇文章帶你學(xué)會(huì)兩個(gè)場(chǎng)景下 Selenium 爬取動(dòng)態(tài)網(wǎng)頁(yè)小技巧

          共 973字,需瀏覽 2分鐘

           ·

          2020-03-14 23:20


          閱讀本文大概需要 3 分鐘。


          Selenium 是一個(gè)用于 Web 應(yīng)用程序測(cè)試的工具。Selenium 測(cè)試直接運(yùn)行在瀏覽器中,就像真正的用戶在操作一樣,是爬復(fù)雜動(dòng)態(tài)網(wǎng)頁(yè)的必備工具。支持的瀏覽器包括 IE,Mozilla Firefox,Safari,Google Chrome,Opera 等。

          這里分兩個(gè)場(chǎng)景,給大家介紹 Selenium 爬動(dòng)態(tài)網(wǎng)頁(yè)小技巧。

          場(chǎng)景一:替換日期控件值

          以 12306 網(wǎng)站為例,如下圖所示,按照正常的方法,我們首先要定位到時(shí)間元素,然后調(diào)用 Selenium 的 click() 方法進(jìn)行點(diǎn)擊。

          771a3d33bb1d7ecf5a4e252ccf595787.webp

          這種操作也是可行的。但是,過(guò)了一段時(shí)間,我們?cè)俅芜\(yùn)行自動(dòng)化代碼的時(shí)候,就會(huì)發(fā)現(xiàn)功能運(yùn)行不正常。因?yàn)槿掌诟暮?,日歷控件布局發(fā)生了變化,而且操作起來(lái)很麻煩。

          我們先看一下日期框的元素,如下圖所示:

          c36db0de96498bc962d5c19fa026815b.webp

          重點(diǎn)看一下 value=‘text’,這種屬性值可以通過(guò) JavaScript 來(lái)改變,三行代碼就能解決這個(gè)問(wèn)題,如下圖所示:

          eba4e144e43076a1cc2bf50916ca41dc.webp

          第一行是要輸入的日期,第二行是 JavaScript 代碼,“documen.getElementById”是通過(guò) HTML 的“id”定位元素,通過(guò)改變?cè)撛氐摹皏alue”實(shí)現(xiàn)值的變化。

          效果演示如下:

          場(chǎng)景二:動(dòng)態(tài)網(wǎng)頁(yè)自動(dòng)下拉

          一些復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)需要下拉才能把元素顯示完全,例如騰訊視頻主頁(yè),如下圖所示:

          da9f18228a85dd44e54e8521acd340ee.webp

          如果需要自動(dòng)爬取這類動(dòng)態(tài)網(wǎng)頁(yè),我們同樣可以執(zhí)行 JavasScript 的方法來(lái)實(shí)現(xiàn),用? 5 行代碼就可以連續(xù)滑動(dòng)網(wǎng)頁(yè),將動(dòng)態(tài)網(wǎng)頁(yè)元素全部展示出來(lái),代碼如下圖所示:

          7f078872f86c68d8d03c146df53d09c5.webp

          小編這里采取的分步下拉的方法,每次滾動(dòng) 1/10,“window.scrollTo”為向下滑動(dòng)的命令,“document.body.clientHeight”為整個(gè)窗口的高度,“h=(i/10)”為每次滑動(dòng)的高度。

          效果演示如下:

          結(jié)語(yǔ)

          將 JavaScript 應(yīng)用到 Selenium 中可以幫我們解決很多問(wèn)題,這里舉兩個(gè)小例子只是拋磚引玉,希望大家以后遇到 Selenium 不好解決的問(wèn)題時(shí)可以考慮在 JavaScript 身上尋找突破。



          推薦閱讀

          1

          介紹一種更方便的代理池實(shí)現(xiàn)方案

          2

          就想寫個(gè)爬蟲,我到底要學(xué)多少東西???

          3

          非常適合小白的 Asyncio 教程

          4??

          使用 Python 遠(yuǎn)程登陸服務(wù)器的最佳實(shí)踐


          好文和朋友一起看
          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色五月丁香影音先锋 | 大香蕉婷婷五月天 | 免费的欧美黄色高清视频网站 | 91av影视 | 精品国产激情 |