由漫威电影公司出品的科幻电影<复仇者联盟3:无限战争>,于2018年5月11日在中国大陆上映,得到了观众的广泛好评,今天我们一起来看看网友们看完后的心得.
下面是爬取到的部分数据:
下面是完整代码:
环境:Python3.6
- import requests
- import re
- import time
- import os
- import xlsxwriter
- # 用于记录写入数据的条数
- data_cursor = 1
- # 创建工作文件
- def write_data():
- # 删除文件
- if os.path.exists('./复仇者联盟3评论信息.xlsx'):
- os.remove('复仇者联盟3评论信息.xlsx')
- # 创建工作文件
- workbooke = xlsxwriter.Workbook('复仇者联盟3评论信息.xlsx')
- # 创建工作表
- worksheet = workbooke.add_worksheet()
- # 写标题
- worksheet.write(0, 0, '是否有用')
- worksheet.write(0, 1, '是否看过')
- worksheet.write(0, 2, '作者')
- worksheet.write(0, 3, '时间')
- worksheet.write(0, 4, '内容')
- return workbooke, worksheet
- def main():
- global data_cursor
- try:
- page_num = int(input("请输入页数:"))
- # 创建excel文件
- workbooke, worksheet = write_data()
- for page in range(page_num):
- # 评论url地址
- # url = "https://movie.douban.com/subject/4920389/comments?start=" + str(
- # page * 20) + "&limit=20&sort=new_score&status=P&percent_type="
- url = "https://movie.douban.com/subject/24773958/comments?start=" + str(
- page * 20) + "&limit=20&sort=new_score&status=P&percent_type="
- # 获取网页源代码
- html = requests.get(url)
- html.encoding = 'utf-8'
- html = html.text
- # 正则匹配得到需要的数据
- result = re.findall(
- r'<a href="javascript:;" class="j a_show_login" οnclick="">(.*?)</a>'
- r'.*?<a href="https://www.douban.com/.*?" class="">(.*?)</a>'
- r'.*?<span>(.*?)</span>'
- r'.*?<span class="comment-time " title="(.*?)">.*?</span>'
- r'.*?<p class=""> (.*?)</p>',
- html, re.S)
- # print(result, len(result))
- for index, item in enumerate(result):
- # 用用 作者 看过 时间 评论内容
- # print(item[0], item[1], item[2], item[3], item[4].strip(''))
- # 写入数据
- worksheet.write(data_cursor, 0, item[0])
- worksheet.write(data_cursor, 1, item[2])
- worksheet.write(data_cursor, 2, item[1])
- worksheet.write(data_cursor, 3, item[3])
- worksheet.write(data_cursor, 4, item[4])
- data_cursor += 1
- print('第{}页完成...'.format(page + 1))
- # 每一页之间间隔1秒
- time.sleep(1)
- except Exception as e:
- print(e)
- finally:
- # 关闭文件对象
- workbooke.close()
- if __name__ == '__main__':
- main()