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

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

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

 1 #coding=utf-8
 2 from selenium import webdriver
 3 import unittest
 4 from time import sleep
 5 
 6 class DoubanMovie(unittest.TestCase):
 7 
 8     def setUp(self): 
 9         self.dr = webdriver.Chrome()
10         self.top_movie_list = self.get_douban_movies_top12()
11         self.movie = self.get_movie_rank_file()
12 
13     def get_douban_movies_top12(self):
14         ‘‘‘获取豆瓣电影成都地区正在上映的前12部电影名字及评分‘‘‘
15         self.dr.get("https://movie.douban.com/nowplaying/chengdu/")
16         sleep(3)
17         movie_list = []
18         i = 0
19         while i < 60:
20             movie_name = self.dr.find_elements_by_css_selector(.lists li)[i].get_attribute(data-title)#定位电影名字
21             movie_grand = self.dr.find_elements_by_css_selector(.lists li)[i].get_attribute(data-score)#定位电影评分
22             movie_list.append([movie_name,movie_grand])
23             i += 5
24         movie_list.sort(key=lambda y:float(y[1]), reverse=True)#利用sort根据电影评分高到低对所获取的电影进行排序
25         return movie_list
26 
27     def get_movie_rank_file(self):
28         self.file_title = 豆瓣电影成都地区正在上映的前12部电影
29         self.file = open(self.file_title + .txt, wb)
30         for item in self.top_movie_list:
31             self.file.write((电影名字: + item[0] +    + 电影评分: + item[1] + \n).encode(utf-8))
32         self.file.close()
33 
34     def test_movie(self):
35         pass
36         print("获取完毕")
37 
38     def tearDown(self):
39         self.dr.quit()
40 
41 if __name__ == __main__:
42     unittest.main()

技术分享

技术分享

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

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