前两篇博客,我们介绍了如何对豆瓣读书历史记录进行抓取,这一篇博客是一个收尾工作。
传送门:
本文适用于利用标签系统(Tagging System)对豆瓣读书用户的读书兴趣建模,对用户进行相关推荐研究工作。
import requests
from bs4 import BeautifulSoup
headers = {
"Host": "book.douban.com",
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
def GetBookTags(link):
res=requests.get(link,headers=headers,allow_redirects=False)
res.encoding='utf-8'
soup=BeautifulSoup(res.text)
#获取书籍标签
tags=[]
for tag in soup.select('a[class="tag"]'):
tags.append(str(tag.text))
print(tags)
if __name__=="__main__":
url=r"https://book.douban.com/subject/1209078/"
GetBookTags(url)
当然,除了通过直接爬取豆瓣用户常用的标签来构建标签系统以外,我们还可以通过对书籍的介绍文本内容进行关键词提取(常见算法有TextRank,LDA和HMM),感兴趣的朋友可以去学习相关算法的原理和使用。
这里给出一个TextRank算法提取书籍介绍文本的代码仅供参考,使用jieba中文开源工具进行关键词抽取。代码如下:
#导入jieba工具包
import jieba.analyse
#课程介绍文本-爬取方法不难实现,可参照本文第一个代码
text="你的博文爬取豆瓣读书书籍(豆瓣成员常用的标签)标签-Python爬虫实战因涉及“版权不明”, 审核未通过,您可以修改相关内容后再次发布。健康和谐的网络环境,需要我们共同维护,如有问题请联系客服。"
#1.分词
fenci_text = jieba.cut(text)
#2.去掉停用词
textrank=jieba.analyse.textrank
stopwords = {}.fromkeys([line.rstrip() for line in open('stop_words.txt')])#stop_words.txt是一个停用词表,在nlp处理中很常见,可以自行搜索下载
final=""
for word in fenci_text:
if word not in stopwords:
final=final+word
#提取关键词
keywords_TR=textrank(final, topK=20)#top-k的值可以按照实际效果进行设置,这里采用K=20
print(keywords_TR)