Python3采集豆瓣用户的书籍评论信息

如果想要对豆瓣某用户的评论数据进行情感分析,那么我们首先要将此用户的评论信息进行数据采集。

这里我将使用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="  "))

采集结果显示:

原创内容,转载请在文章首页附加原文链接!

猜你喜欢

转载自www.cnblogs.com/LiXinx/p/10317142.html