如果想要对豆瓣某用户的评论数据进行情感分析,那么我们首先要将此用户的评论信息进行数据采集。
这里我将使用Python3对豆瓣某用户的评论数据进行采集,将结果数据储存到xml文件中,便于以后情感分析使用。
书评数据采集源代码:(以单用户为单位)
1 import requests 2 from bs4 import BeautifulSoup 3 import xml.dom.minidom # 在内存中创建一个空的文档 4 doc = xml.dom.minidom.Document() 5 6 target_url =‘‘ #此处填写想要采集的某用户的评论网址 7 # 创建一个根节点对象 8 root = doc.createElement(‘People‘) 9 # 将根节点添加到文档对象中 10 doc.appendChild(root) 11 12 #创建节点存储所有评论数据 13 nodeComment = doc.createElement(‘Commentlist‘) 14 15 #设置翻页操作,有一些用户书评较多,无法通过单页的数据完成全部的内容采集 16 for n in range(5): 17 target_url = target_url + ‘?start=‘ + str(n * 10) #每一页会显示10个书评信息,因此此处是以10为单位进行增长的 18 #解析网页 19 info = requests.get(target_url) 20 soup = BeautifulSoup(info.text, ‘lxml‘) 21 #定位书评内容所在标签位置 22 book_comment_total = soup.find_all(‘div‘, attrs={‘class‘: ‘main review-item‘}) 23 #定位存储书籍评分的位置 24 book_grade_total = soup.find_all(‘header‘, attrs={‘class‘, ‘main-hd‘}) 25 for m ,n in zip(book_comment_total ,book_grade_total):#以一本书为单位进行数据的存储 26 book_url = m.a[‘href‘] 27 book_grade = n.span[‘title‘] 28 if book_url.startswith(‘https://book‘): 29 i=1 30 r_book_name = m.img[‘title‘]#书籍名称 31 32 book_comment_info = m.find(‘div‘, attrs={‘class‘: ‘short-content‘}) 33 book_comment_info = book_comment_info.text.lstrip().rstrip() 34 book_comment_info = book_comment_info[:-4] # 去掉字符串’(展开) #书籍的评论信息 35 36 # 一个用户设置一对<comment>标签 37 comment =doc.createElement(‘comment‘) 38 #设置存储书籍名称的标签节点 39 bName = doc.createElement(‘bookName‘) 40 bName_text = doc.createTextNode(r_book_name) 41 bName.appendChild(bName_text) 42 # 设置存储书籍链接的标签节点 43 bUrl=doc.createElement(‘bookUrl‘) 44 bUrl_text = doc.createTextNode(book_url) 45 bUrl.appendChild(bUrl_text) 46 # 设置存储书籍评分的标签节点 47 bGrade = doc.createElement(‘bookGrade‘) 48 bGrade_text = doc.createTextNode(book_grade) 49 bGrade.appendChild(bGrade_text) 50 # 设置存储书籍评论内容的标签节点 51 bComment = doc.createElement(‘bookComment‘) 52 bComment_text = doc.createTextNode(book_comment_info) 53 bComment.appendChild(bComment_text) 54 #将这些节点存储到父节点中 55 comment.appendChild(bName) 56 comment.appendChild(bUrl) 57 comment.appendChild(bGrade) 58 comment.appendChild(bComment) 59 60 nodeComment.appendChild(comment) 61 62 #将评论存储书评的节点插入到根节点下 63 root.appendChild(nodeComment) 64 65 #建立一个新的xml文件,并将存储的内容插入到文件中 66 fp = open(‘hahahah.xml‘, ‘w‘,encoding=‘utf-8‘) 67 fp.write(doc.toprettyxml(indent=" "))
采集结果显示:
原创内容,转载请在文章首页附加原文链接!
原文:https://www.cnblogs.com/LiXinx/p/10317142.html