首页 > 代码库 > 用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序

用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序

抓取豆瓣电影(http://movie.douban.com/nowplaying/chengdu/)中的正在热映前12部电影,并按照评分排序,保存至txt文件

#coding=utf-8
from selenium import webdriver
import unittest
from time import sleep

class DoubanMovie(unittest.TestCase):

    def setUp(self): 
        self.dr = webdriver.Chrome()
        self.top_movie_list = self.get_douban_movies_top12()
        self.movie = self.get_movie_top12_file()

    def get_douban_movies_top12(self):
        ‘‘‘获取豆瓣电影成都地区正在上映的前12部电影名字及评分‘‘‘
        self.dr.get("https://movie.douban.com/nowplaying/chengdu/")
        sleep(3)
        movie_list = []#定义空list为后面存放电影名字和电影评分作准备
        i = 0
        while i < 60:  #12*5=60
            movie_name = self.dr.find_elements_by_css_selector(‘.lists li‘)[i].get_attribute(‘data-title‘)#定位电影名字
            movie_grand = self.dr.find_elements_by_css_selector(‘.lists li‘)[i].get_attribute(‘data-score‘)#定位电影评分
            movie_list.append([movie_name,movie_grand])#向空list追加插入获取的电影名字和电影评分
            i += 5 #每个电影的li标签间隔为5个
        movie_list.sort(key=lambda x:float(x[1]), reverse=True)#利用sort中key方法来根据电影评分高到低对所获取的电影进行排序(sorted(movie_list, key=lambda movie: movic[2], reverse=True)   # sort by movie_grand 倒序)
        return movie_list

    def get_movie_top12_file(self):
        self.file_title = ‘豆瓣电影成都地区正在上映的前12部电影‘
        self.file = open(self.file_title + ‘.txt‘, ‘wb‘)
        for item in self.top_movie_list:
            self.file.write((‘电影名字:‘ + item[0] + ‘  ‘ + ‘电影评分:‘ + item[1] + ‘\n‘).encode(‘utf-8‘))
        self.file.close()

    def test_movie(self):
        pass
        print("获取完毕")

    def tearDown(self):
        self.dr.quit()

if __name__ == ‘__main__‘:
    unittest.main()

技术分享

技术分享

 注:电影中暂无评分记为0分。

本文出自 “无想法,无成就!” 博客,请务必保留此出处http://kemixing.blog.51cto.com/10774787/1882707

用python+selenium抓取豆瓣电影中的正在热映前12部电影并按评分排序