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,下面就是输出到文件的结果
能够看到百度分类的还算能够,不过没有分的很细,像是时事跟综合这两个的范围也太广了,大部分的新闻分这两个几乎不会错,而后也是有几个新闻分类错,例如最后一个明显不是娱乐新闻。