使用百度NLP接口對搜狐新聞作分類

1、簡介html

本文主要是要利用百度提供的NLP接口對搜狐的新聞作分類,百度對NLP接口有提供免費的額度能夠拿來練習,主要是利用了NLP裏面有個文章分類的功能,能夠順便測試看看百度NLP分類作的準不許。詳細功能與使用方式能夠上(http://ai.baidu.com/tech/nlp/topictagger)觀看。python

 

2、創建爬蟲測試

首先要先寫一個能夠快速爬取全部文章內容的爬蟲程序,關於爬蟲的原理能夠看我以前寫的介紹(https://www.cnblogs.com/yenpaul/p/9968015.html),這邊就直接附上代碼url

def all_url():
    url = 'http://news.sohu.com/'
    data = requests.get(url).text
    s = etree.HTML(data)
    print('\n')
    urls0 = s.xpath('/html/body/div[*]/div[*]/div[1]/div/div[*]/div[*]/div[*]/ul/li[*]/a/@href')
    urls1 = s.xpath('/html/body/div[*]/div[*]/div[1]/div/div[*]/div[*]/div/div[*]/div[*]/ul/li[*]/a/@href')
    urls2 = s.xpath('/html/body/div[*]/div[*]/div[1]/div[*]/div[*]/ul/li[*]/a/@href')
    urls3 = s.xpath('/html/body/div[*]/div[*]/div[1]/div/div[*]/div[*]/ul/li[*]/a/@href')
    urls_all = urls0+urls1+urls2+urls3
    f = open('urllist.txt','a')
    for url in urls_all:
        f.write(url)
        f.write("\n")
    f.close()

先把搜狐首頁的新聞連接所有抓下來放在「urllist.txt」的文件裏面spa

能夠看到這邊都是新聞的連接,也就是我接下來要去爬取得網頁3d

3、申請接口權限code

因爲是要利用百度的接口,必需要先在百度註冊帳號而後登錄,而後須要先建立一個項目,建立完會獲得一組APP_ID,APP_KEY,APP_SECRECT,是用在接下來的接口鑑權上的,建立完再查看百度AI的API文檔,python的能夠看這邊(http://ai.baidu.com/docs#/NLP-Python-SDK/top)htm

而後下拉到文章分類的接口blog

能夠看到他須要兩個參數,分別是文章的標題和文章的內容,再看返回參數的格式接口

咱們只須要知道分類的這個tag放哪裏就好

 

4、抓取資料,提供數據給接口

接着就是要去抓取資料,咱們須要去抓「標題」和「內文」傳給這個接口,並將返回的結果寫入「xinwen.txt」這個記事本,下面是代碼

def get_content():
    f = open('urllist.txt')
    u = 0
    for url in f:
        u = u+1
        print(u)
        head = {}
        head['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
        req = request.Request(url, headers=head)
        response = request.urlopen(req)
        data = response.read().decode('utf-8')
        s = etree.HTML(data)
        title = s.xpath('//*[@id="article-container"]/div[2]/div[1]/div[1]/h1/text()')
        content = s.xpath('//*[@id="mp-editor"]/p/text()')
        content_text = ''.join(content)
        type = client.topic(title, content)
        f = open('xinwen.txt','a')
        f.write('##')
        f.write(type['item']['lv1_tag_list'][0]['tag'])
        f.write('##')
        f.write(title[0])
        f.write('\n')
    f.close()

因爲搜狐也是有反爬蟲,須要假裝user-agent,下面就是輸出到文件的結果

能夠看到百度分類的還算能夠,不過沒有分的很細,像是時事跟綜合這兩個的範圍也太廣了,大部分的新聞分這兩個幾乎不會錯,而後也是有幾個新聞分類錯,例如最後一個明顯不是娛樂新聞。

相關文章
相關標籤/搜索