• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Python的網(wǎng)頁信息爬取技術研究

      2021-04-22 17:14:20陳海燕朱慶華?,?/span>
      電腦知識與技術 2021年8期
      關鍵詞:解析器爬蟲語句

      陳海燕 朱慶華 ?,?/p>

      摘要:現(xiàn)在是信息時代,互聯(lián)網(wǎng)為我們提供了豐富的信息資源。只要我們有需要就能通過網(wǎng)絡得到。但是正因為網(wǎng)絡上的資源太豐富了,如果想得到需要的內(nèi)容,用戶就要做大量篩選和甄別工作。網(wǎng)絡信息篩選和抓取有很多方法,比如Java、Python等語言,還有一些專門的公司為用戶提供網(wǎng)絡爬蟲程序做信息的定向抓取。目前使用較多的是Python語言,文章要研究的內(nèi)容是:通過使用Python庫中的Beautiful Soup庫快速、簡捷地抓取所需信息。

      關鍵詞:BeautifulSoup;Python;網(wǎng)絡爬蟲

      中圖分類號:TP393? ? ? ? 文獻標識碼:A

      文章編號:1009-3044(2021)08-0195-02

      1 BeautifulSoup介紹

      Beautiful Soup是一個可以從網(wǎng)頁文件中提取信息的Python庫,它包含在bs4庫里。需要注意的是下載、安裝bs4時需要聯(lián)網(wǎng),否則安裝會出錯,具體命令為:pip install bs4,如圖1所示。

      2 解析HTML流程說明

      HTML文件是由一組尖括號構成的標簽組織起來的,每一對尖括號形式一個標簽,標簽之間存在上下關系,形成一顆標簽樹。因此可以說Beautiful Soup是解析、遍歷、維護“標簽樹”的功能庫。眾所周知:html由眾多標簽組成,如何精確定位標簽,從標簽中提取到需要的內(nèi)容呢?

      在找到對應標簽位置后,熟悉html的人知道,信息一般會存儲在兩個位置中:

      1)開始標簽和結束標簽中的內(nèi)容;

      2) 開始標簽中的屬性值。

      例如下面這行標簽:

      美食網(wǎng)

      。

      這個標簽的含義是:一個段落中有一個超級鏈接,鏈接的地址是:www.baidu.com。我們要做的就是提取之間的“美食網(wǎng)”文字,或者提取標簽的屬性值,即鏈接www.baidu.com內(nèi)容。

      3 使用python進行網(wǎng)頁內(nèi)容獲取的方法

      3.1引入BeautifulSoup庫

      程序開始的第1行需要引入BeautifulSoup庫。如果bs4下出現(xiàn)波浪線表示安裝路徑有問題,需要檢查。語句如圖2所示。

      3.2 html代碼放入str

      將html代碼放入一個變量中,注意,由于html代碼有換行,需要每一行都加上單引號,這樣比較麻煩,可以把html整個代碼用三個單引號里引起來,這樣就簡單多了,而且也增強了代碼的可讀性。如下所示:

      str = '''西紅柿炒雞蛋

      這道菜俺從小吃到大,它是我兒時的全部味覺記憶。

      美食網(wǎng)免責聲明。

      '''

      3.3使用lxml解析器實例化BeautifulSoup對象

      BeautifulSoup支持Python標準庫中的HTML解析器(HTMLParser),還支持一些第三方的解析器,如果我們不安裝它,則 Python 會使用 Python默認的解析器,lxml解析器更加強大,速度更快,推薦安裝使用。具體的語句如圖3所示。

      3.4獲取title標簽里的內(nèi)容

      title標簽的含義是為網(wǎng)頁定義標題。需要說明的是:如果要提取“標題”,只需要使用title標簽名來識別,因為整個html文檔中,title標簽只會出現(xiàn)一次。具體的語句如圖4所示。

      3.5獲取p標簽里的文字

      P標簽是段落標簽,如果要提取p標簽里的內(nèi)容,不能像提取title標簽一樣只使用p標簽,因為p標簽可以有多個。因此p標簽要和它的class屬性聯(lián)合起來使用,例如3.2中給出的標簽,用'first'或'second'來識別p標簽。要提取class屬性是first的p標簽,語句如圖5所示。

      3.6獲取所有p標簽里的文字

      在進行信息抓取時,有時需要提取所有p標簽里的內(nèi)容,這時就可以使用循環(huán)獲取。具體的語句如圖6所示。

      以3.2的標簽為例,運行結果為:

      這道菜俺從小吃到大,它是我兒時的全部味覺記憶。

      美食網(wǎng)免責聲明。

      3.7查找ul標簽里的li標簽

      ul是無序列表標簽,它與li標簽配合使用,一對ul標簽里可以包含若干對li標簽。因為ul標簽也可以有多個,因此ul標簽也要和它的class屬性聯(lián)合起來使用,查找class='list1'的ul標簽里的所有l(wèi)i標簽,可以使用圖7的方法。

      以3.2的標簽為例,運行結果

    1. 食材準備
    2. 制作過程
    3. 同理,也可以先定位到

      本溪市| 黄梅县| 兰西县| 西畴县| 凤山县| 崇仁县| 榆社县| 尤溪县| 霍林郭勒市| 积石山| 宜丰县| 宁蒗| 廉江市| 来安县| 海林市| 新野县| 巨野县| 漠河县| 乡城县| 潍坊市| 辽源市| 双辽市| 宣恩县| 隆昌县| 咸丰县| 吉安县| 报价| 社旗县| 奎屯市| 铜陵市| 乌拉特前旗| 凭祥市| 郁南县| 凤庆县| 岳阳县| 黎城县| 和硕县| 宝鸡市| 乌拉特中旗| 北辰区| 通辽市|