练习---将爬取的豆瓣TOP250存储到Excel表中

爬取豆瓣TOP250的电影,存在Excel中

import requests
from bs4 import BeautifulSoup
import xlwt

#------将爬取内容-豆瓣电影250-存储到excel表格中----------

def excel(movies,save_file):
#存储成excel表
	wb=xlwt.Workbook()  #创建工作表
	sheet=wb.add_sheet('test')  #创建表名
	for m in range(len(movies)): #遍历有几个movie
			#m=0,第一个movie
		for i in range(len(movies[m])):
			sheet.write(m,i,movies[m][i])
	wb.save('C:/Users/Xpeng/Desktop/爬取到的表格/'+save_file+'.xls')

movies=[]  #建个总的movies列表,方便后来Excel的存储

def movie_name(url):
	#获取某页的电影名
	res=requests.get(url)
	html=res.text
	soup=BeautifulSoup(html,'html.parser')
	items=soup.find(class_="grid-16-8 clearfix").find(class_="grid_view").find_all('li')

	for i in items:	 #遍历每一页每一个电影
		movie=[]   #每一页每一个电影都存成一个movie列表
		title=i.find(class_="hd").find(class_="title")
		star=i.find(class_="star").find(class_="rating_num")
		brief=i.find(class_="quote").find(class_="inq")
		link=i.find(class_="hd").find('a')['href']
		
		movie.append('《'+title.text+'》')
		movie.append(star.text+'分')
		movie.append(brief.text)
		movie.append(link)
		
		global movies
		movies.append(movie)   #将每个movie存进总列表movies
		
		print(movie)

	try:
		next=soup.find(class_="paginator").find(class_="next").find('a')['href']
		#翻到最后一页
	except TypeError:
		return 0
	else:
		return 'https://movie.douban.com/top250'+next

next='https://movie.douban.com/top250?start=0&filter='
count=0

while next!=0:
	count+=1
	next=movie_name(next)
	print('-----------以上是第'+str(count)+'页的内容-----------')


excel(movies,'豆瓣电影TOP205')

爬取豆瓣TOP250的书籍,存在Excel中

import requests
from bs4 import BeautifulSoup
import xlwt

#------将爬取内容-豆瓣书籍250-存储到excel表格中----------

def excel(books,save_file):
#存储成excel表
	wb=xlwt.Workbook()  #创建工作表
	sheet=wb.add_sheet('test')  #创建表名
	for m in range(len(books)):
		for i in range(len(books[m])):
			sheet.write(m,i,books[m][i])
	wb.save('C:/Users/Xpeng/Desktop/爬取到的表格/'+save_file+'.xls')

books=[]

def book_name(url):
	res=requests.get(url)
	html=res.text
	soup=BeautifulSoup(html,'html.parser')
	items=soup.find(class_="grid-16-8 clearfix").find(class_="indent").find_all('table')
	
	for i in items:	
		book=[]   
		title=i.find(class_="pl2").find('a')
		book.append('《'+title.text.replace(' ','').replace('\n','')+'》')
		
		star=i.find(class_="star clearfix").find(class_="rating_nums")
		book.append(star.text+'分')
		
		try:
			brief=i.find(class_="quote").find(class_="inq")
		except AttributeError:
			book.append('”暂无简介“')
		else:
			book.append(brief.text)
        #这是与电影不同的地方,因为书籍有的简介是空的没有的,所以这边增加了一个捕获异常

		link=i.find(class_="pl2").find('a')['href']
		book.append(link)
		
		global books
		books.append(book)   
		
		print(book)

	try:
		next=soup.find(class_="paginator").find(class_="next").find('a')['href']
		#翻到最后一页
	except TypeError:
		return 0
	else:
		return next

next='https://book.douban.com/top250?start=0&filter='
count=0

while next!=0:
	count+=1
	next=book_name(next)
	print('-----------以上是第'+str(count)+'页的内容-----------')
excel(books,'豆瓣TOP250书籍哦')
 

书籍与电影不一样的地方在于,我爬取的包括简介,豆瓣每个电影都有简介,但书籍有的没有简介,就会出现简介是空的异常,所以书籍增加了一个捕获异常,当简介为空的时候打印出暂无简介。

你可能感兴趣的:(爬虫学习)