一、爬取携程网站_广州动物园景点评论数据100条
数据包括:用户名、评论文本内容、发布时间</n> 结果分别保存在userNames,commentDetails commentTimes列表中。
import requests
import json
import time
userNames = []
commentDetails = []
commentTimes = []
for pagen in range(0,10):
# 第 1 部分:获取网页内容
payload = {
"arg": {
"channelType": 2,
"collapseType": 0,
"commentTagId": 0,
"pageIndex": pagen,
"pageSize": 10,
"poiId": 76885,
"sourceType": 1,
"sortType": 3,
"starType": 0
},
"head": {
"cid": "09031145214876926565",
"ctok": "",
"cver": "1.0",
"lang": "01",
"sid": "8888",
"syscode": "09",
"auth": "",
"xsid": "",
"extension": []
}
}
postUrl = "https://m.ctrip.com/restapi/soa2/13444/json/getCommentCollapseList?_fxpcqlniredt=09031145214876926565&x-traceID=09031145214876926565-1696822046998-4690723"
html = requests.post(postUrl, data=json.dumps(payload)).text
# 第2部分——解析网页内容
html_1 = json.loads(html)
commentItems = html_1["result"]["items"]
# 第2部分——提取用户名、景点评论和时间
for i in range(0,len(commentItems)) :
userName = commentItems[i]['userInfo']['userNick']
commentDetail = commentItems[i]['content']
commentTime = commentItems[i]['publishTypeTag']
userNames.append(userName)
commentDetails.append(commentDetail)
commentTimes.append(commentTime)
print("用户名:\n",userNames)
print("用户评论内容:",commentDetails)
print("用户评论时间:",commentTimes)
二、数据保存为CSV格式
Pandas的数据结构主要是:Series(一维数组),DataFrame(二维数组)。DataFrame 是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame是由索引和内容组成,既有行索引也有列索引,它可以被看作由Series组成的字典(共同用一个索引)。 pd.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False):创建 DataFrame数据结构。
# 创建 DataFrame
import pandas as pd
import numpy as np
# 创建空的DataFrame
df = pd.DataFrame()
df['用户名'] = userNames
df['发布时间'] = commentTime
df['景点评价'] = commentDetails
# 显示数据
display(df)
df.to_csv('携程网站广州动物园景点评价.csv',index=False)
三、读取 携程网站广州动物园景点评价.csv文件
读取 携程网站广州动物园景点评价.csv文件 并 显示前5条数据
# 创建 DataFrame
import pandas as pd
import numpy as np
df = pd.read_csv('携程网站广州动物园景点评价.csv')
df.head(5)
四、只查看景点评价数据
df['景点评价']
五、只查看景点评价数据
for i in range(0,len(df['景点评价'])):
comment = df['景点评价'][i].replace("\n", "")
df.loc[i, ['景点评价']] = [comment]
df.head(10)