幾天小編連續(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選擇器
下面是一些常用的選擇器示例。
五、性能對比
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官網(wǎng) https://www.videolan.org/,選擇windows(32位)版本下載。
下載VLC軟件
運行安裝文件
選擇軟件安裝位置
一定記得要勾選網(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>
代碼編輯截圖
具體請參看海康專業(yè)文檔
先用Google Chrome瀏覽器測試,提示插件不支持。
Chrome瀏覽器提示插件不受支持
用微軟IE測試,需要安裝插件。
IE瀏覽器提示要安裝ActiveX插件
確認安裝插件
瀏覽器只顯示了第一個畫面。
IE瀏覽器顯示不完整
用編輯器測試,2種內(nèi)核都能正常顯示。
編輯器里測試效果
改用360瀏覽器,呈現(xiàn)2X2的畫面,實現(xiàn)最終的顯示效果。
360瀏覽器顯示的最終效果圖
本文參考了一些專業(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.瀏覽器中的緩存原理
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。