鸟与虫(五)豆瓣我想看高分电影

  • 哈罗有见面了,几天刚刚验收学校仿站项目,就来赶博客,上课赶得哦。

  • 我的爬虫原则: 爬虫就要有礼貌,爬虫与反爬虫的战争很奇妙。呸,很费精神。

  • 话不多说上代码


'''
    这次是抓取豆瓣网的前100部高分影片
    本代码作者:高佳乐


'''

import requests                                     ##导入requests库
import json                                         ##导入json库,对json的一个解析
import time                                         ##还是那句话,爬虫要有礼貌


#######################################################定义一个类##############################################################################

class spring():                                     ##定义类,
    def __init__(self):                             ##定义构造函数
        self.start = 0                              ##定义初始开始数
        self.limit = 100                            ##初始电影数量
        self.type = 1                               ##初始类型,下边是地址的url
        self.url='https://movie.douban.com/j/chart/top_list?type='+str(self.type)+'&interval_id=100%3A90&action=&start='+str(self.start)+'&limit='+str(self.limit)
        return

    ####################################################获取HTML#################################################################################

    def html(self,url):                             ##定义一个获取html_text的方法封装
        html = requests.get(url)                    ##html是获取url
        html_text = html.text                       ##html_text是html的写出
        html_text = json.loads(html_text)           ##html_text是json解析再一次
        # html_text = json.dumps(html_text,sort_keys=True,indent=4,ensure_ascii=False)           ##格式化输出实验一遍
        # for i in html_text:                       ##循环输出以便观看
        #     print(i)
        return html_text                            ##返回json解析后的html_text格式

    ########################################################操作##################################################################################

    def select(self):                               ##这个方法就是开始解析后的json的格式后然后获取电影的标题,封面,分数啥的。
        ##选择类型,上边的url是types切换数字的,type就是电影类型。
        self.type = input('请输入要查询的代码,默认是纪录片:\n1-记录片,11-剧情,24-喜剧,5-动作,13-爱情,17-科幻,25-动画\n10-悬疑,19-惊悚,20-恐怖,23-短片,6-情色,26-同性,14-音乐,7-歌舞\n28-家庭,8-儿童,2-传记,4-历史,22-战争,3-犯罪,27-西部,16-奇幻\n15-冒险,12-灾难,29-武侠,30-古装,18-运动,31-黑色电影\n')
        print('正在获取排行榜前100个电影资料。')      ##输出提示,本来打算给一个好看的等待条的状态,结果有点问题先这样吧→_→
        i=1                                         ##这开始就是等待条的代码
        while i<5:
            print('·',end='')
            time.sleep(0.5)
            i+=1
        print()                                     ##嘿,这是等待条的结束,可以忽略
        url = self.url                              ##url是初始结构的url,通过上边type合成后的url
        html_text = self.html(url)                  ##获取后的url的json的格式
        for i in html_text:                         ##因为获取后的会是一个列表,列表里边是字典,所以要遍历输出字典
            ##分数和星星
            rating = i['rating']                    ##字典的访问方式,字典[键],下边也是
            fenshu = rating[0]                      ##获取到的是列表用索引
            xing = int(rating[1])/10
            ##第几个
            rank = i['rank']
            ##封面
            cover_url = i['cover_url']
            ##类型
            types = i['types']
            types = ','.join(types)
            ##地点
            regions = i['regions']
            regions = ''.join(regions)
            ##电影名字
            title = i['title']
            ##详细地址
            url = i['url']
            ##时间
            release_date = i['release_date']
            ##评论人数
            vote_count = i['vote_count']
            ##演员
            actors = i['actors']
            actors = ','.join(actors)               ##这里的演员返回的是一个列表,因为是多个演员,所以用join的函数,用法就是:连接符.join.列表啥的,就是用连接符把列表里边的元素连接
            ##按格式输出喽
            print('第%s个:\n封面:%s\n电影名:%s\n演员:%s\n%s-%s-%s\n星星:%s\n分数:%s\n评价人数:%s\n详情页面:%s'%(rank,cover_url,title,actors,release_date,regions,types,xing,fenshu,vote_count,url))
            ##分解线
            print('\n','-'*200,'\n')
            time.sleep(1)                           ##爬虫宗旨:有礼貌,慢慢爬



##########################################################################操作########################################################################

douban = spring()
douban.select()
  • 终于要进入抓包解析动态页面的脚步了,和静态页面感觉很奇妙。

  • 这会我也不太熟,就不多说啥了,怕误人子弟。

  • 就到这里吧,砸门下次见面。

  • 怎么可能,效果图还没放就再见,我没放文档里面,啊哈哈哈。


    搜狗截图20180710095534.png
  • 好了,现在,砸门下次再见吧。

你可能感兴趣的:(鸟与虫(五)豆瓣我想看高分电影)