使用百度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,下面就是输出到文件的结果

能够看到百度分类的还算能够,不过没有分的很细,像是时事跟综合这两个的范围也太广了,大部分的新闻分这两个几乎不会错,而后也是有几个新闻分类错,例如最后一个明显不是娱乐新闻。

相关文章
相关标签/搜索