整合營銷服務商

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

          免費咨詢熱線:

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

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

          一、正則表達式

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

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

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

          二、BeautifulSoup

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

          利用美麗的湯去提取目標信息

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

          三、Lxml

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

          Xpath

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

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

          四、CSS

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

          CSS選擇器

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

          • 選擇所 有標簽: *
          • 選擇<a>標 簽: a
          • 選擇所有class=”link” 的元素: .l in k
          • 選擇 class=”link” 的<a>標簽: a.link
          • 選擇 id= " home ” 的<a>標簽: a Jhome
          • 選擇父元素為<a>標簽的所有< span>子標簽: a > span
          • 選擇<a>標簽內(nèi)部的所有<span>標簽: a span
          • 選擇title屬性為” Home ” 的所有<a>標簽: 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只在某些特定場景下有用。

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

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

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

          VLC軟件下載

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

          下載VLC軟件

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

          運行安裝文件

          選擇軟件安裝位置

          一定記得要勾選網(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插件

          確認安裝插件

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

          IE瀏覽器顯示不完整

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

          編輯器里測試效果

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

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

          結(jié)語

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

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


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

          習web前端,首先要學HTML。

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

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

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

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

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

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

          audio、video標簽。

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

          input標簽的accept屬性,email、phone、url等類型。

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

          Multiple file selection多文件選擇屬性。

          html的import、template

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

          小編是一個有著5年工作經(jīng)驗的架構師,關于web前端,自己有做材料的整合,一個完整學習web前端的路線,學習材料和工具。需要的伙伴可以私信我,發(fā)送“前端”等3秒后就可以獲取領取地址,免費送給大家。對于學習web前端有任何問題(學習方法,學習效率,如何就業(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標簽。7.web語義化。8.瀏覽器中的緩存原理


          主站蜘蛛池模板: 国产爆乳无码一区二区麻豆 | 一区二区三区福利视频免费观看| 日韩免费视频一区| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产福利在线观看一区二区| 国产不卡视频一区二区三区| 国产激情一区二区三区小说| 亚洲av无码一区二区乱子伦as| 色噜噜一区二区三区| 无码av人妻一区二区三区四区| 国产在线一区二区在线视频| 白丝爆浆18禁一区二区三区| 亚洲av无码一区二区三区在线播放| 国产无套精品一区二区| 精品成人av一区二区三区| 国产亚洲福利一区二区免费看| 中文字幕av日韩精品一区二区 | 国产SUV精品一区二区四| 国产在线精品一区二区中文| 国产精品一区三区| 日韩精品人妻av一区二区三区| 国产SUV精品一区二区四| 在线观看日本亚洲一区| 成人精品一区二区户外勾搭野战| 水蜜桃av无码一区二区| 亚洲一区二区中文| 亚洲美女一区二区三区| 久久久久人妻精品一区| 少妇精品久久久一区二区三区| 日韩一区二区三区无码影院| 亚洲AV美女一区二区三区| 少妇激情av一区二区| 亚洲视频一区在线| 亚洲欧洲无码一区二区三区| 色一情一乱一区二区三区啪啪高| 亚洲欧美日韩中文字幕一区二区三区 | 亚洲国产韩国一区二区| 一区一区三区产品乱码| 国内精品视频一区二区八戒| 高清一区二区在线观看| 久久国产精品一区|