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'(.*?).*?'
                             + u'(.*?).*?'
                             + u'.*?导演:(.*?)   .*?'
                             + u'
(.*?) / (.*?) / (.*?)

.*?'
+ u'(.*?).*?' + u'(.*?)人评价.*?' + u'(.*?)', 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

你可能感兴趣的:(Python)