Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 亚洲精品www,一区二区高清视频在线观看,四虎影院一区二区

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          Python網(wǎng)絡(luò)爬蟲四大選擇器(正則表達式、BS4、Xpath、CSS)總結(jié)

          幾天小編連續(xù)寫了四篇關(guān)于Python選擇器的文章,分別用正則表達式、BeautifulSoup、Xpath、CSS選擇器分別抓取京東網(wǎng)的商品信息。今天小編來給大家總結(jié)一下這四個選擇器,讓大家更加深刻的理解和熟悉Python選擇器。

          一、正則表達式

          正則表達式為我們提供了抓取數(shù)據(jù)的快捷方式。雖然該正則表達式更容易適應(yīng)未來變化,但又存在難以構(gòu)造、可讀性差的問題。當(dāng)在爬京東網(wǎng)的時候,正則表達式如下圖所示:

          利用正則表達式實現(xiàn)對目標(biāo)信息的精準(zhǔn)采集

          此外 ,我們都知道,網(wǎng)頁時常會產(chǎn)生變更,導(dǎo)致網(wǎng)頁中會發(fā)生一些微小的布局變化時,此時也會使得之前寫好的正則表達式無法滿足需求,而且還不太好調(diào)試。當(dāng)需要匹配的內(nèi)容有很多的時候,使用正則表達式提取目標(biāo)信息會導(dǎo)致程序運行的速度減慢,需要消耗更多內(nèi)存。

          二、BeautifulSoup

          BeautifulSoup是一個非常流行的 Pyhon 模塊。該模塊可以解析網(wǎng)頁,并提供定位內(nèi)容的便捷接口。通過'pip install beautifulsoup4'就可以實現(xiàn)該模塊的安裝了。

          利用美麗的湯去提取目標(biāo)信息

          使用 BeautifulSoup的第一步是將己下載的 HTML 內(nèi)容解析為 soup文檔。由 于大多 數(shù)網(wǎng) 頁都不具備良好的HTML 格式,因此BeautifulSoup需要對實際格式進行確定。BeautifulSoup能夠正確解析缺失的引號并閉合標(biāo)簽,此外還會添加<html >和<body>標(biāo)簽使其成為完整的HTML文檔。通常使用find() 和find_all()方法來定位我們需要的元素。如果你想了解BeautifulSoup全部方法和參數(shù),可以查閱BeautifulSoup的官方文檔。雖然BeautifulSoup在代碼的理解上比正則表達式要復(fù)雜一些,但是其更加容易構(gòu)造和理解。

          三、Lxml

          Lxml模塊使用 C語言編寫,其解析速度比 BeautiflSoup更快,而且其安裝過程也更為復(fù)雜,在此小編就不贅述啦。XPath 使用路徑表達式在 XML 文檔中選取節(jié)點。節(jié)點是通過沿著路徑或者 step 來選取的。

          Xpath

          使用 lxml 模塊的第一步和BeautifulSoup一樣,也是將有可能不合法的HTML 解析為 統(tǒng)一格式。 雖然Lxml可以正確解析屬性兩側(cè)缺失的引號,并閉合標(biāo)簽,不過該模塊沒有額外添加<html >和<body>標(biāo)簽 。

          在線復(fù)制Xpath表達式可以很方便的復(fù)制Xpath表達式。但是通過該方法得到的Xpath表達式放在程序中一般不能用,而且長的沒法看。所以Xpath表達式一般還是要自己親自上手。

          四、CSS

          CSS選擇器表示選擇元素所使用 的模式。BeautifulSoup整合了CSS選擇器的語法和自身方便使用API。在網(wǎng)絡(luò)爬蟲的開發(fā)過程中,對于熟悉CSS選擇器語法的人,使用CSS選擇器是個非常方便的方法。

          CSS選擇器

          下面是一些常用的選擇器示例。

          • 選擇所 有標(biāo)簽: *
          • 選擇<a>標(biāo) 簽: a
          • 選擇所有class=”link” 的元素: .l in k
          • 選擇 class=”link” 的<a>標(biāo)簽: a.link
          • 選擇 id= " home ” 的<a>標(biāo)簽: a Jhome
          • 選擇父元素為<a>標(biāo)簽的所有< span>子標(biāo)簽: a > span
          • 選擇<a>標(biāo)簽內(nèi)部的所有<span>標(biāo)簽: a span
          • 選擇title屬性為” Home ” 的所有<a>標(biāo)簽: a [title=Home]

          五、性能對比

          lxml 和正則表達式模塊都是C語言編寫的,而BeautifulSoup則是純Python 編寫的。下表總結(jié)了每種抓取方法的優(yōu)缺點。

          相對困難需要注意的是。lxml在內(nèi)部實現(xiàn)中,實際上是將CSS選擇器轉(zhuǎn)換為等價的Xpath選擇器。

          六、總結(jié)

          如果你的爬蟲瓶頸是下載網(wǎng)頁,而不是抽取數(shù)據(jù)的話,那么使用較慢的方法(如BeautifulSoup) 也不成問題。如果只需抓取少量數(shù)據(jù),并且想要避免額外依賴的話,那么正則表達式可能更加適合。不過,通常情況下,l xml是抓取數(shù)據(jù)的最好選擇,這是因為該方法既快速又健壯,而正則表達式和BeautifulSoup只在某些特定場景下有用。

          想學(xué)習(xí)更多Python網(wǎng)絡(luò)爬蟲與數(shù)據(jù)挖掘知識,可前往專業(yè)網(wǎng)站:http://pdcfighting.com/

          時的工作中常會遇到一些系統(tǒng)集成的需求,需要在軟件平臺集成視頻監(jiān)控系統(tǒng)。而軟件開發(fā)者往往不懂安防弱電系統(tǒng),不知道如何在自己的軟件界面中集成一些監(jiān)控的實時畫面。而監(jiān)控廠家提供的SDK比較復(fù)雜,很難在短時間完成集成的任務(wù)。最終導(dǎo)致軟件平臺的一些功能無法實現(xiàn),影響項目的質(zhì)量。

          本文提供的方法主要基于VLC播放器的ActiveX插件,通過這個插件,在網(wǎng)頁中調(diào)用攝像機的RTSP流,實現(xiàn)圖像的實時預(yù)覽,音頻的監(jiān)聽等等功能。文章以海康的IP網(wǎng)絡(luò)攝像機為例給出具體的調(diào)用方法,供大家學(xué)習(xí)參照。

          VLC軟件下載

          登錄VLC官網(wǎng) https://www.videolan.org/,選擇windows(32位)版本下載。

          下載VLC軟件

          VLC軟件安裝(務(wù)必勾選插件)

          運行安裝文件

          選擇軟件安裝位置

          一定記得要勾選網(wǎng)頁瀏覽器插件

          完成安裝

          網(wǎng)頁編輯

          可選用記事本(notepad)或?qū)I(yè)的編輯器,輸入如下代碼,保存為html網(wǎng)頁文件。

          <html>
          <body>
          
          <title>TESTVDEIO-1-TEST</title>
          <head>
          <table>
                      <tbody>
                      <caption>視頻監(jiān)控演示</caption>
                  <tr>
                      <td>
                      <object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" id='vlc' events='false' width="720" height="410">
              <param name='mrl' value='rtsp://admin:q66668888@172.16.200.88:554/h264/ch1/main/av_stream' />
              <param name='volume' value='50' />
              <param name='autoplay' value='true' />
              <param name='loop' value='false' />
              <param name='fullscreen' value='false' />
              <param name='controls' value='false' />
                      </td>
                      <td>
                      <object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" id='vlc' events='false' width="720" height="410">
              <param name='mrl' value='rtsp://admin:q66668888@172.16.200.89:554/h264/ch1/main/av_stream' />
              <param name='volume' value='50' />
              <param name='autoplay' value='true' />
              <param name='loop' value='false' />
              <param name='fullscreen' value='false' />
              <param name='controls' value='false' />
                      </td>
                  </tr>
                   <tr>
                      <td>
                      <object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" id='vlc' events='false' width="720" height="410">
              <param name='mrl' value='rtsp://admin:q66668888@172.16.200.89:554/h264/ch1/main/av_stream' />
              <param name='volume' value='50' />
              <param name='autoplay' value='true' />
              <param name='loop' value='false' />
              <param name='fullscreen' value='false' />
              <param name='controls' value='false' />
                      </td>
                      <td>
                      <object type='application/x-vlc-plugin' pluginspage="http://www.videolan.org/" id='vlc' events='false' width="720" height="410">
              <param name='mrl' value='rtsp://admin:q66668888@172.16.200.88:554/h264/ch1/main/av_stream' />
              <param name='volume' value='50' />
              <param name='autoplay' value='true' />
              <param name='loop' value='false' />
              <param name='fullscreen' value='false' />
              <param name='controls' value='false' />
                      </td>
                  </tr>
              </tbody>
          </table>
                      </object>
          </body>
          </html>

          代碼編輯截圖

          海康威視RTSP調(diào)用格式


          具體請參看海康專業(yè)文檔

          瀏覽器測試

          先用Google Chrome瀏覽器測試,提示插件不支持。

          Chrome瀏覽器提示插件不受支持

          用微軟IE測試,需要安裝插件。

          IE瀏覽器提示要安裝ActiveX插件

          確認(rèn)安裝插件

          瀏覽器只顯示了第一個畫面。

          IE瀏覽器顯示不完整

          用編輯器測試,2種內(nèi)核都能正常顯示。

          編輯器里測試效果

          改用360瀏覽器,呈現(xiàn)2X2的畫面,實現(xiàn)最終的顯示效果。

          360瀏覽器顯示的最終效果圖

          結(jié)語

          本文參考了一些專業(yè)文章,就不一 一列出了,在這一并謝過!

          由于本人水平有限,有不對的地方敬請指正。文章旨在拋磚引玉,通過討論,相互學(xué)習(xí),共同進步。


          我是WoNew弱電蝸牛,一名從業(yè)多年的弱電工程師,在頭條傳播弱電專業(yè)知識和行業(yè)信息,分享工作中的經(jīng)驗和心得。
          喜歡我的文章或視頻,歡迎點贊和轉(zhuǎn)發(fā)。有疑問或建議,也歡迎留言,我會盡力解答。

          習(xí)web前端,首先要學(xué)HTML。

          關(guān)于HTML基礎(chǔ)知識,首先是要掌握一些常用標(biāo)簽的使用和他們的各個屬性,這些常用的標(biāo)簽我總結(jié)了一下有以下這些:

          html:頁面的根元素。head:頁面的頭部標(biāo)簽,是所有頭部元素的容器。body:頁面的主體標(biāo)簽,頁面展現(xiàn)的內(nèi)容就放置在這里面。title:頁面的標(biāo)題。

          meta:位于文檔的頭部,提供頁面的元信息,包括關(guān)鍵字、描述等等。link:定義文檔與外部資源的關(guān)系,最常用的用途就是引入樣式表。script:腳本標(biāo)簽,可以把js腳本代碼放置在這個標(biāo)簽內(nèi),也可以使用這個標(biāo)簽的src屬性引入一個外部標(biāo)簽。style:樣式標(biāo)簽,可以把css代碼寫在這個標(biāo)簽中。

          a:超鏈接,href屬性代表要鏈接到的地方,target屬性代表打開方式。img:圖像標(biāo)簽,src屬性表示圖片的位置。form:表單元素,它內(nèi)部的input、select、textarea等標(biāo)簽都是比較重要的。

          div:定義文檔中的分區(qū)或節(jié),可以使用div來進行頁面的布局等操作。另外還有ul、li、p、button、iframe、p、table等標(biāo)簽也很常用,nav、section、article、header、aside、footer等語義化標(biāo)簽也需要了解一下。

          除了要了解上面這一些標(biāo)簽之外,還需要對一些新的HTML5的API有一定的了解:

          audio、video標(biāo)簽。

          Canvas:定義圖形,比如圖表和其他圖像。

          input標(biāo)簽的accept屬性,email、phone、url等類型。

          getElementByClassName根據(jù)class名來獲取一個元素結(jié)點。

          Multiple file selection多文件選擇屬性。

          html的import、template

          process標(biāo)簽,webGL等內(nèi)容。

          小編是一個有著5年工作經(jīng)驗的架構(gòu)師,關(guān)于web前端,自己有做材料的整合,一個完整學(xué)習(xí)web前端的路線,學(xué)習(xí)材料和工具。需要的伙伴可以私信我,發(fā)送“前端”等3秒后就可以獲取領(lǐng)取地址,免費送給大家。對于學(xué)習(xí)web前端有任何問題(學(xué)習(xí)方法,學(xué)習(xí)效率,如何就業(yè))都可以問我。希望你也能憑自己的努力,成為下一個優(yōu)秀的程序員!

          還有一些要知道的知識點:

          1.doctype的作用。2.unicode、utf8等編碼的原理和區(qū)別。3.如何進行頁面性能優(yōu)化。4.png、jpg、webp、gif等圖片格式的不同的優(yōu)勢。5.HTML行內(nèi)元素與塊級元素的區(qū)別。6.移動web端開發(fā)常用head標(biāo)簽。7.web語義化。8.瀏覽器中的緩存原理


          主站蜘蛛池模板: 91久久精一区二区三区大全| 日韩精品中文字幕无码一区| 日本不卡免费新一区二区三区| 国产福利一区二区三区视频在线| 国产女人乱人伦精品一区二区| 日本内射精品一区二区视频| 亚洲日本一区二区一本一道| 天堂一区二区三区在线观看| 国产亚洲一区二区手机在线观看| 香蕉久久AⅤ一区二区三区| 成人中文字幕一区二区三区| 久久精品黄AA片一区二区三区 | 久久无码AV一区二区三区| 久久久久人妻一区精品| 日韩一区二区三区视频久久| 国产精品伦子一区二区三区| 日本一区二区三区免费高清 | 日韩一区二区三区免费播放| 亚洲av无码成人影院一区 | 狠狠色婷婷久久一区二区三区| 国产福利一区视频| 日韩十八禁一区二区久久| 一区二区三区免费在线视频 | 国产99视频精品一区| 亚洲午夜在线一区| 精品国产乱子伦一区二区三区 | 精品一区二区三区四区在线| 亚洲国产精品一区二区第四页| 国产av福利一区二区三巨| 99国产精品一区二区| 日本一区二区不卡视频| 日韩精品一区二区亚洲AV观看| 久久久老熟女一区二区三区| 亚洲一区中文字幕在线观看| 亚洲av无码一区二区三区在线播放| 亚洲AV无码一区二区三区牛牛| 日韩在线视频一区二区三区| 一区二区三区福利| 亚洲一区精品中文字幕| 无码一区18禁3D| 国产高清一区二区三区四区|