import requests,bs4,openpyxl
wb=openpyxl.Workbook()
#创建工作薄
sheet=wb.active
#获取工作薄的活动表
sheet.title='movies'
#工作表重命名
sheet['A1']='序号'
sheet['B1']='电影名'
sheet['C1']='评分'
sheet['D1']='推荐语'
sheet['E1']='链接'
for x in range(10):
headers={'user-agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
url='https://movie.douban.com/top250?start=' +str(x*25)+'&filter='
res=requests.get(url,headers=headers)
bs=bs4.BeautifulSoup(res.text,'html.parser')
bs=bs.find('ol',class_='grid_view')
for titles in bs.find_all('li'):
num=titles.find('em',class_='').text
#标题
title=titles.find('span',class_='title').text
#评分
comment=titles.find('span',class_='rating_num').text
#链接
url_movie=titles.find('a')['href']
if titles.find('span',class_='inq')!=None:
tes=titles.find('span',class_='inq').text
sheet.append([num,title,comment,tes,url_movie])
print(num+'.'+title+'---'+comment+'\n'+'推荐语:'+tes+'\n'+url_movie)
else:
sheet.append([num,title,comment,None,url_movie])
print(num+'.'+title+'---'+comment+'\n'+tes+'\n'+'\n'+url_movie)
wb.save('movieTop250.xlsx')
用csv格式存储信息:
import requests,bs4,csv
csv_file=open('movieTop250.csv','w',newline='')
writer=csv.writer(csv_file)
writer.writerow(['序号','电影名','评分','推荐语','链接'])
for x in range(10):
headers={'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36'}
url='https://movie.douban.com/top250?start=?'+str(x*25)+'&filter='
res=requests.get(url,headers=headers)
bs=bs4.BeautifulSoup(res.text,'html.parser')
bs=bs.find('ol',class_='grid_view')
for titles in bs.find_all('li'):
num=titles.find('em',class_='').text
title=titles.find('span',class_='title').text
comment=titles.find('span',class_='rating_num').text
url_movie=titles.find('a')['href']
if titles.find('span',class_='inq')!=None:
tes=titles.find('span',class_='inq').text
writer.writerow([num+'.'+title+'--'+comment+'\n'+'推荐语:'+tes+'\n'+url_movie])
else:
writer.writerow([num+'.'+title+'--'+comment+'\n'+'\n'+url_movie])
csv_file.close()