Python爬取豆瓣top250电影数据并写入excel,视频教程+源码奉上不可能学不会
时间真是好快啊,又到每日跟大家分享Python小技巧的时候了,今天跟大家分享的是爬取豆瓣top250电影。这篇文章我会把源码
以及视频教程给大家,想学的小伙伴可以动手操办起来。话不多说,这就来。
## 1.python程序
Python学习交流Q群:906715085### #导入库 import requests import parsel import xlsxwriter
Python学习交流Q群:906715085### #导入库 import requests import parsel import xlsxwriter
Python学习交流Q群:906715085### #创建excel,设置列宽 wb=xlsxwriter.Workbook('豆瓣电影.xlsx') ws=wb.add_worksheet('豆瓣电影海报') ws.set_column('A:A',7) ws.set_column('B:B',30) ws.set_column(2,3,50) ws.set_column('G:G',30)
#标题行 headings=['海报','名称','导演','主演','年份','国家','类型']
#设置excel风格 ws.set_tab_color('red') head_format=wb.add_format({'bold':1,'fg_color':'cyan','align':'center','font_name':u'微软雅黑','valign':'vcenter'}) cell_format=wb.add_format({'bold':0,'align':'center','font_name':u'微软雅黑','valign':'vcenter'}) ws.write_row('A1',headings,head_format)
#创建空列表 j=0 actor_1=[] actor_2=[] year=[] country=[] movie_type=[]
#发送请求,获取响应,遍历豆瓣电影信息 for i in range(0,250,25): url='https://movie.douban.com/top250?start='+str(i) response=requests.get(url,headers=headers) response.encoding=response.apparent_encoding selector=parsel.Selector(response.text) lis=selector.css('#content>div>div.article>ol>li>div>div.pic>a>img::attr(src)').getall() title=selector.css('#content>div>div.article>ol>li>div>div.info>div.hd>a>span:nth-child(1)::text').getall() director_info=selector.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[1]').getall() movie_info = selector.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[1]/text()[2]').getall()
# 提取并清洗导演、主演标签信息 for director in director_info: director=director.strip().replace('\xa0\xa0\xa0',' ').replace('...','').replace('导演: ','').split('主演: ') if len(director)>1: actor_1.append(director[0]) actor_2.append(director[1]) else: actor_1.append(director[0]) actor_2.append('None')
#提取并清洗电影年份、国家、类型标签信息 for detail in movie_info: detail=detail.strip().split('\xa0/\xa0') year.append(detail[0]) country.append(detail[1]) movie_type.append(detail[2])
#下载电影海报信息到本地 for n in range(len(lis)): img=requests.get(lis[n]).content with open(f'./图片/{title[n]}.jpg','wb') as f: f.write(img)
# 将获取到的各种标签信息写入excel for k in range(len(lis)): ws.set_row(k+1+j*25,60) ws.insert_image('A'+str(k+2+j*25),f'./图片/{title[k]}.jpg',{'x_scale':0.2,'y_scale':0.2}) ws.write(k+1+j*25,1,title[k],cell_format) ws.write(k+1+j*25,2,actor_1[k+j*25],cell_format) ws.write(k+1+j*25,3,actor_2[k+j*25],cell_format) ws.write(k+1+j*25,4,year[k+j*25],cell_format) ws.write(k+1+j*25,5,country[k+j*25],cell_format) ws.write(k+1+j*25,6,movie_type[k+j*25],cell_format) j+=1 wb.close()
## 2.效果


## 3.视频教程
视频链接: https://www.bilibili.com/video/BV1hL4y1L7mq?share_source=copy_web 学不会的跟视频做
## 4.结尾
源码以及视频教程都给大家放在上面了,各位小伙伴不妨动手试试。疫情居家没有剧看是很痛苦的,记得点一个大大的赞。