Python爬虫小案例:豆瓣电影TOP250

源码:

#!/usr/bin/python3
# -*-coding: UTF-8-*-


from urllib import request
import re


class MovieTop250(object):
    def __init__(self):
        self.start = 0
        self.headers = {'User-Agent': 'Mozilla/5.0(Windows NT 6.1; WOW64)'}
        self.movie_list = []
        self.file_top250 = 'E:\\TOP250.txt'

    def get_html_page(self):
        try:
            url = 'https://movie.douban.com/top250?start=' + str(self.start)
            req = request.Request(url, headers=self.headers)
            res = request.urlopen(req)
            html_page = res.read().decode('UTF-8')
            page_num = (self.start + 25) // 25
            print('正在爬取第' + str(page_num) + '页的数据...')
            self.start += 25
            return html_page
        except Exception as e:
            print('get_html_page函数发生' + e + '异常')

    def get_movie_info(self):
        pattern = re.compile(u'<em.*?class="">(.*?)</em>.*?'
                             + u'<span.*?class="title">(.*?)</span>.*?'
                             + u'<p.*?class="">.*?导演:(.*?)&nbsp;&nbsp;&nbsp;.*?'
                             + u'<br>(.*?)&nbsp;/&nbsp;(.*?)&nbsp;/&nbsp;(.*?)</p>.*?'
                             + u'<span.*?class="rating_num".*?property="v:average">(.*?)</span>.*?'
                             + u'<span>(.*?)人评价</span>.*?'
                             + u'<span.*?class="inq">(.*?)</span>', re.S)
        while self.start <= 225:
            html_page = self.get_html_page()
            movies = re.findall(pattern, html_page)
            for movie in movies:
                self.movie_list.append([movie[0].lstrip().rstrip(),  # 电影排名
                                        movie[1].lstrip().rstrip(),  # 电影名称
                                        movie[2].lstrip().rstrip(),  # 导演姓名
                                        movie[3].lstrip().rstrip() + '年',  # 电影年份
                                        movie[4].lstrip().rstrip().replace(' ', '/'),  # 制作地区
                                        movie[5].lstrip().rstrip().replace(' ', '/'),  # 电影类型
                                        movie[6].lstrip().rstrip() + '分',  # 电影评分
                                        movie[7].lstrip().rstrip() + '人评论',  # 参评人数
                                        movie[8].lstrip().rstrip()])  # 简短影评

    def write_top250(self):
        print('正在将数据写入TOP250.txt...')
        file_top250 = open(self.file_top250, 'w', encoding='UTF-8')
        try:
            for movie in self.movie_list:
                file_top250.write('电影排名:' + movie[0] + '\n\n')
                file_top250.write('电影名称:' + movie[1] + '\n\n')
                file_top250.write('导演姓名:' + movie[2] + '\n\n')
                file_top250.write('电影年份:' + movie[3] + '\n\n')
                file_top250.write('制作地区:' + movie[4] + '\n\n')
                file_top250.write('电影类型:' + movie[5] + '\n\n')
                file_top250.write('电影评分:' + movie[6] + '\n\n')
                file_top250.write('参评人数:' + movie[7] + '\n\n')
                file_top250.write('简短影评:' + movie[8] + '\n\n\n\n')
        except Exception as e:
            print('write_top250函数发生' + e + '异常')
        finally:
            file_top250.close()

    def entrance(self):
        print('开始爬取数据...')
        self.get_movie_info()
        self.write_top250()
        print('数据爬取结束!!!')


if __name__ == '__main__':
    movie_top250 = MovieTop250()
    movie_top250.entrance()

部分结果:

电影排名:1

电影名称:肖申克的救赎

导演姓名:弗兰克·德拉邦特 Frank Darabont

电影年份:1994年

制作地区:美国

电影类型:犯罪/剧情

电影评分:9.6分

参评人数:906375人评论

简短影评:希望让人自由。

Over

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值