欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python爬蟲中html轉(zhuǎn)換樹形結(jié)構(gòu)的示例-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)python爬蟲中html轉(zhuǎn)換樹形結(jié)構(gòu)的示例,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站是專業(yè)的武寧網(wǎng)站建設(shè)公司,武寧接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行武寧網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

BeautifulSoup就是一個(gè)專門用來從html和xml文檔中提取數(shù)據(jù)的庫(kù),現(xiàn)在的版本是bs4。除了BeautifulSoup之外,python還具有一些其它的庫(kù),如HTMLParser等,作用都差不多。解析器結(jié)合正則表達(dá)式,很容易將我們所需要的內(nèi)容提取出來。

首先安裝BeautifulSoup:

$pip install beautifulsoup4

在python環(huán)境下導(dǎo)入字符串,創(chuàng)建BeautifulSoup對(duì)象:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html_str, 'lxml', from_encoding='utf-8')
  • BeautifulSoup可以將復(fù)雜的html文檔轉(zhuǎn)化成樹形結(jié)構(gòu),每個(gè)節(jié)點(diǎn)都是pyhton對(duì)象,所有的對(duì)象可以歸納為4種:


  • Tag

  • NavigableString

  • BeautifulSoup

  • Comment

HtmlParser將要接收一個(gè)字符串,輸出data和新采集到的一些urls。之前寫過的add_new_urls()函數(shù)接受一個(gè)可迭代對(duì)象,所以這里新的urls我們采用集合的形式(也可采用列表的形式)返回,data采用字典的形式存儲(chǔ)并返回。

此外,我們觀察到,詞條內(nèi)容中含有的鏈接為"/item/..."的形式,這并不是一個(gè)完整的url,要在前面加上“https://baike.baidu.com”進(jìn)行補(bǔ)全,利用urlparse模塊可以很方便地完成這個(gè)任務(wù)(當(dāng)然也可以使用拼接字符串的方式)。

下面就是HtmlParser的完整代碼:

'''
-----------------------------------------------------------------
HtmlParser
'''
import re    #正則表達(dá)式模塊
import urlparse    #用來拼接url
from bs4 import BeautifulSoup
 
class HtmlParser(object):
    def parser(self, page_url, html_cont):
        '''
        解析器主函數(shù)
        parm page_url:一個(gè)url
        parm html_cont:網(wǎng)頁(yè)內(nèi)容,格式為字符串
        return: urls, 數(shù)據(jù);格式為 set, dict
        '''
        if page_url is None or html_cont is None:
            print "page_url is None"
            return
        #建立bs對(duì)象,使用html.parser進(jìn)行解析
        soup = BeautifulSoup(html_cont, 'html.parser', from_encoding='urf-8')
        print "soup established"
        #接下來分別調(diào)用兩個(gè)私有函數(shù)返回urls和data
        new_urls = self._get_new_urls(page_url, soup)
        print "new_urls get"
        new_data = self._get_new_data(page_url, soup)
        print "new_data get"
        return new_urls, new_data
 
    def _get_new_urls(self, page_url, soup):
        '''
        從頁(yè)面中抽取指向其他詞條的鏈接
        parm page_url: 當(dāng)前頁(yè)面url
        parm soup: beautifulsoup對(duì)象
        return: 新url的set
        '''
        new_urls = set()
        #根據(jù)正則表達(dá)式規(guī)則對(duì)頁(yè)面內(nèi)的鏈接進(jìn)行篩選,留下想要的鏈接
        links = soup.find_all('a', href=re.compile(r'/item/.+'))
        for link in links:
            #每個(gè)link都是Tag對(duì)象,Tag對(duì)象的操作方法與字典相同
            new_url = link['href']
            #借助urljoin,可以很方便地拼接url
            new_full_url = urlparse.urljoin(page_url, new_url)
            new_urls.add(new_full_url)
        return new_urls
 
    def _get_new_data(self, page_url, soup):
        '''
        提取想要的數(shù)據(jù)
        parm page_url: 當(dāng)前頁(yè)面url
        parm soup: beautifulsoup對(duì)象
        return: dict
        '''
        #聲明字典
        data = {}
        data['url'] = page_url
        data['title'] = soup.find('dd', class_='lemmaWgt-lemmaTitle-title').find('h2').get_text()
        data['summary'] = soup.find('div', class_='lemma-summary').get_text()
 
        return data

關(guān)于python爬蟲中html轉(zhuǎn)換樹形結(jié)構(gòu)的示例就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

本文題目:python爬蟲中html轉(zhuǎn)換樹形結(jié)構(gòu)的示例-創(chuàng)新互聯(lián)
URL標(biāo)題:http://chinadenli.net/article22/hhicc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作關(guān)鍵詞優(yōu)化云服務(wù)器全網(wǎng)營(yíng)銷推廣網(wǎng)站營(yíng)銷商城網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)