这回我们具体的对数据获取进行介绍,页面中不同电影、日期的场次信息都是不同的,所以我们需要分级获取,我们按照如下形式排布:
'''
movie_session = [不同电影的场次数据
{movie_name: ...
result:[每一天的场次数据
{
date: ...
session_result:[当天的场次数据
{},
{}....
]
}
]
}
]:每部电影的数据
'''
1. 获取当天的场次信息
首先遍历当天所有场次,获取到对应的信息添加进列表,以日期为区分分隔,当循环结束后加入新的列表返回
session_list = today.xpath('.//table/tbody/tr')
# 当天每个场次
for session in session_list:
begin_time = session.xpath('.//span[@class="begin-time"]/text()')[0]
end_time = session.xpath('.//span[@class="end-time"]/text()')[0]
lang = session.xpath('.//span[@class="lang"]/text()')[0]
hall = session.xpath('.//span[@class="hall"]/text()')[0]
session_result.append({
"date": re.findall('\d+', time_list[num])[0] + '-' + re.findall('\d+', time_list[num])[1],
"begin_time": begin_time,
"end_time": end_time,
"lang": lang,
"hall": hall
})
result.append({
"date": re.findall('\d+', time_list[num])[0] + '-' + re.findall('\d+', time_list[num])[1],
"session_result": session_result
})
2. 获取某电影的所有场次信息
获取该电影下的日期信息,遍历所有日期,调用上面所写的获取当天数据方法获取所有天数的场次数据添加至列表当中返回
#所有场次天数
days = movie.xpath('.//div[contains(@class, "plist-container")]')
for day in days:
result.append(getToday(day, time_list, days.index(day)))
# print(movie_result)
movie_session.append({
"movie_name": movie_name,
"star": star,
"result": result
})
3. 遍历所有电影并进行数据添加
对电影对象进行遍历,调用上述方法获取数据并写入文件
movies_list = html.xpath('//div[contains(@class, "show-list")]')
#每一部电影数据
for movie in movies_list:
tmp_result.append(get_MovieData(movie)[0])
with open('files/' + cinema_name + '.json', 'a+', encoding='utf-8') as f:
f.write(json.dumps(tmp_result, ensure_ascii=False, indent=2))
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦