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,下面就是輸出到文件的結果
能夠看到百度分類的還算能夠,不過沒有分的很細,像是時事跟綜合這兩個的範圍也太廣了,大部分的新聞分這兩個幾乎不會錯,而後也是有幾個新聞分類錯,例如最後一個明顯不是娛樂新聞。