最近在学习Python爬虫,学习并使用了一个非常强大的解析库: gawel/pyquery: A jquery-like library for python ,语法和Jquery非常类似,可以非常方便地提取信息,因此也顺便挑战了一下爬取豆瓣电影TOP 250,链接为: https://movie.douban.com/top250?start=0&filter= ,由于刚开始学习爬虫,代码将就着看,也简单的总结了一下。
Python资源共享群:626017123
数据的爬取
以下为简单的代码:
from pyquery import PyQuery as pq import csv import logging import time #豆瓣Top250信息爬取:https://movie.douban.com/top250?start=0&filter= #使用休眠方法爬取 爬取速度非常慢,防止豆瓣封IP start_url='https://movie.douban.com/top250?start=%s&filter=' #存储目录 csv_file='douban_top250.csv' logging.basicConfig(level=logging.INFO,format='%(asctime)s-%(name)s-%(levelname)s-%(message)s') logger=logging.getLogger(__name__) head_str='电影名称,年份,概括,导演,编剧,主演,类型,制片国家,语言,上映日期,片长,别名,评分,评价人数,链接' csv_heads=head_str.split(',') #写入头信息 with open(csv_file,'w',encoding='utf_8_sig',newline='') as f: writer=csv.writer(f) writer.writerow(csv_heads) real_page=0 for page in range(0,250,25): logger.info("正在休眠5s,请稍后……") time.sleep(5) real_page+=1 logger.info('正在获取第%s页的信息',real_page) page_url=start_url % page #当前页链接 page_doc=pq(page_url) single_doc=page_doc('.item') #获取单项信息 for item in single_doc.items(): #电影名称,年份,概括,导演,编剧,主演,类型,制片国家,语言,上映日期,片长,别名,评分,评价人数,链接 info_list=[] #评分 rate=item('.star .rating_num').text() #评价人数 rate_nums=item('.star span').eq(3).text() #概括 quote=item('.bd p').eq(1).text() #进入详情页面提取信息 detail_url=item('.pic a').attr('href') detail_doc=pq(detail_url) #为防止封IP,休眠5s logger.info("正在休眠3s,请稍后……") time.sleep(3) #电影名称和年份 title=detail_doc('h1 span').eq(0).text() year=detail_doc('h1 .year').text()[1:-1] info_list.append(title) info_list.append(year) info_list.append(quote) #基本信息 infos=detail_doc('#info').text().split('\n')[:-1] for index in range(len(infos)): info=infos[index].split(':')[1] info_list.append(info) info_list.append(rate) info_list.append(rate_nums) info_list.append(detail_url) #部分电影有官方链接如https://movie.douban.com/subject/1291561/,去除该链接,但可能会误删,最终手动修复 if len(info_list)==16: del info_list[7] #删除官方网站 with open(csv_file,'a',encoding='utf_8_sig',newline='') as f: writer=csv.writer(f) writer.writerow(info_list) logger.info('获取------%s------信息成功!',title)
最终爬取的文件截图如下,包括的字段为:电影名称,年份,概括,导演,编剧,主演,类型,制片国家,语言,上映日期,片长,别名,评分,评价人数,链接
下载链接: https://www.lanzous.com/i6317he
简单的数据分析
由于对Python的数据分析还不了解,简单地用Excel进行分析。
豆瓣电影TOP250中,制片国为美国的电影占了118部,而中国大陆仅有14部,20时间90年代后到至今的30年中,TOP250高达86%,而中国电影虽拍的非常多,但高质量的影片依然不足。同问,中国何时能再次拍出“霸王别姬”?