【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
豆瓣top250

主要步骤
1.发送请求,根据url地址,然后送请求
2.获取数据,获取服务器返回的响应的内容
3.解析数据:提取想要爬取的内容
4.保存数据:将得到的数据保存为文档
具体实施
#豆瓣top250
import csv #引入csv模块
import requests #引入请求模块
import time #引入时间模块
import parsel #导入数据解析模块#打开一个csv文件并进行操作,将来数据要存储在csv文件中f=open('豆瓣Top250'+'.csv',mode='a',encoding='utf-8-sig',newline='') #newline,每行写入的时候都不会产生一个空行#加表头,表的第一列
writer=csv.DictWriter(f,fieldnames=[ '电影名' ,'导演演员' ,'种类','评分' ,'评论人数' ,'简介',])
writer.writeheader() #将这些字段写入
number=1 #多页获取,页数for page in range(0,250,25):print(f'正在爬取第{number}页数据')number=number+1time.sleep(1) #睡眠一秒#第一步:发送请求,确定url地址,然后对其发送请求#url='https://movie.douban.com/top250' #想要爬取的地址url=f'https://movie.douban.com/top250?start={page}&filter=' #伪装成浏览器去访问,发送请求,User-Agent:浏览器的标识,基本信息headers={ #注意是键值对'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.35'} #第二步:获取数据,获取服务器返回的响应的内容response=requests.get(url=url,headers=headers) #传递相应的内容,获取服务器返回的响应数据内容#第三步:解析数据,提取想要的内容selector=parsel.Selector(response.text) #解析css里面的选择器lis=selector.css('#content > div > div.article > ol > li') #获取所有的li标签#找到大的li标签,再通过for循环找出每个小的标签for li in lis:title_list=li.css('div > div.info > div.hd > a > span:nth-child(1)::text').getall() #获取电影名称,这里只获取中文名#这里用li而不用Selector是因为从li中获取,这是根据for后面的决定的move_info=li.css('div > div.info > div.bd > p:nth-child(1)::text').getall() #获取电影的详细信息move_comments=li.css('div > div.info > div.bd > div>span::text').getall() #获取电影的评论move_simple=li.css('div > div.info > div.bd > p.quote > span::text').getall() #获取电影简介#getall返回的是列表,所以需要join新的分隔符,连接返回新的字符串title=''.join(title_list)actor=move_info[0] #导演,演员plot=move_info[1] #种类scope=move_comments[0] #评分pnum=move_comments[1] #评论人数intro=''.join(move_simple) #电影简介#第四步:保存数据,将得到的数据保存为文档#装载数据dit={'电影名' : title,'导演演员' : actor,'种类': plot,'评分': scope,'评论人数': pnum,'简介': intro,}writer.writerow(dit) 