赞
踩
春天来了,万物复苏,很多学生都要做课设项目了,又到了码农们爬虫的季节,空气中弥漫着一阵阵激情的交流声!
找到豆瓣电影的汇总页面,整个页面都是各种电影的信息(相当于一个列表,把电影摆到一起)每一条点开后有一个详情页。
从汇总页面开始一级一级深入最后获取到每个条目的详情。
{“tags”:[“热门”,“最新”,“豆瓣高分”,“冷门佳片”,“华语”,“欧美”,“韩国”,“日本”]}
https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start=0
通过链接发现,可以获得一些电影基本信息
更多信息还需要点开电影详情页
#!/usr/bin/env python # coding:utf8 import sys reload(sys) sys.setdefaultencoding('utf8') import urllib2 import urllib #json处理字符集 import json #BeautifulSoup处理页面 from bs4 import BeautifulSoup #定义tags一个标签数据list tags=[] #通过API请求电影标签 url = 'https://movie.douban.com/j/search_tags?type=movie&source=index' #headers通过get请求发送头文件伪装浏览器 request = urllib2.Request(url=url) response = urllib.urlopen(request,timeout=20) request = response.read() result = json(response.read()) tags = result['tags'] #根据每个标签获取列表 movies = [] for tag in tags: limit = 0 while 1: url = 'https://movie.douban.com/j/search_subjects?type=movie&tag=' + tag +'&page_limit=50&page_start=' + str(limit) print url request = urllib2.Request(url=url) response = urllib.urlopen(request,timeout=20) request = response.read() result = json(response.read()) result = result['subjects'] #如果此页空了,退出循环 if len(result) == 0 break #页数自增20 limit +=20 #处理subjects字典中的每一条信息 for item in result: movies.append(item) #对第一种电影只要第一个分类 ##### break ##### break print len(movies) #通过下标访问,写入操作 for x in xrange(0,len(movies)): #item电影中的每一项 item = movies[x] request = urllib2.Request(url=item['url']) response = urllib.urlopen(request,timeout=20) result = response.read() #用BeautifulSoup解析result html = BeautifulSoup(result) title = html.select('h1')[0] #去除放映时间 title = title.select('span')[0] #只得到标签中的文本内容 title = title.get_text() print title
本项目通过GET类API接口,根据提供的标签、排序方法、每页数量、每页开始编号等参数返回相应的电影数据,按推荐程度排名,从0号开始,返回热门标签下的20条电影数据。针对每个标签,使用第二个API不断请求数据,如果请求结果中包含数据,则将page_start增加20再继续,知道返回结果为空,说明这一标签下的电影数据已经全部拿到。
BeautifulSoup包提供了解析HTML文本、查找和选择HTML元素、提取元素内容和属性的功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。