国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

2021-04-22 17:14陳海燕朱慶華常瑩
電腦知識與技術(shù) 2021年8期
關(guān)鍵詞:解析器爬蟲語句

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

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

關(guān)鍵詞:BeautifulSoup;Python;網(wǎng)絡(luò)爬蟲

中圖分類號:TP393? ? ? ? 文獻標(biāo)識碼: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文件是由一組尖括號構(gòu)成的標(biāo)簽組織起來的,每一對尖括號形式一個標(biāo)簽,標(biāo)簽之間存在上下關(guān)系,形成一顆標(biāo)簽樹。因此可以說Beautiful Soup是解析、遍歷、維護“標(biāo)簽樹”的功能庫。眾所周知:html由眾多標(biāo)簽組成,如何精確定位標(biāo)簽,從標(biāo)簽中提取到需要的內(nèi)容呢?

在找到對應(yīng)標(biāo)簽位置后,熟悉html的人知道,信息一般會存儲在兩個位置中:

1)開始標(biāo)簽和結(jié)束標(biāo)簽中的內(nèi)容;

2) 開始標(biāo)簽中的屬性值。

例如下面這行標(biāo)簽:

美食網(wǎng)

。

這個標(biāo)簽的含義是:一個段落中有一個超級鏈接,鏈接的地址是:www.baidu.com。我們要做的就是提取之間的“美食網(wǎng)”文字,或者提取標(biāo)簽的屬性值,即鏈接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)免責(zé)聲明。

'''

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

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

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

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

3.5獲取p標(biāo)簽里的文字

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

3.6獲取所有p標(biāo)簽里的文字

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

以3.2的標(biāo)簽為例,運行結(jié)果為:

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

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

3.7查找ul標(biāo)簽里的li標(biāo)簽

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

以3.2的標(biāo)簽為例,運行結(jié)果

  • 食材準(zhǔn)備
  • ,
  • 制作過程
  • 同理,也可以先定位到