Python爬取0复仇者联盟3:无限战争0评论并写入Excel

由漫威电影公司出品的科幻电影<复仇者联盟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" onclick="">(.*?)</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()

猜你喜欢

转载自blog.csdn.net/xiamoyanyulrq/article/details/80284861