Python爬虫实例:豆瓣热播电影

第1步:热播电影格式

  1. 使用Chrome打开也爬取的网页,打开Chrome的开发者选项,点击下图中的按钮!
    ,选中要爬取的区域,然后查看html代码,查看抽取内容的格式。

通过上面方法找到热播电影的格式为:

 <div class="mod-bd">
            <ul class="lists">
                    <li
                        id="2131940"
                        class="list-item"
                        data-title="魔兽"
                        data-score="8.2"
                        data-star="40"
                        data-release="2016"
                        data-duration="124分钟"
                        data-region="美国 中国大陆 加拿大"
                        data-director="邓肯·琼斯"
                        data-actors="崔维斯·费米尔 / 托比·凯贝尔 / 宝拉·巴顿"
                        data-category="nowplaying"
                        data-enough="True"
                        data-showed="True"
                        data-votecount="59747"
                        data-subject="2131940"
                    >
                    <li
                        id="25786060"
                        class="list-item"
                        data-title="X战警:天启"
                        data-score="8.2"
                        data-star="40"
                        data-release="2016"
                        data-duration="144分钟"
                        data-region="美国"
                        data-director="布莱恩·辛格"
                        data-actors="詹姆斯·麦卡沃伊 / 迈克尔·法斯宾德 / 詹妮弗·劳伦斯"
                        data-category="nowplaying"
                        data-enough="True"
                        data-showed="True"
                        data-votecount="82158"
                        data-subject="25786060"
                    >
                    。。。。。。

因此,我们只需要拿到所有

  • 标签中属性data-category=”nowplaying”的data-title属性,就可获得热播电影。
  • HTMLParse简介

    • feed:向解析器(HTMLParse)中喂数据,可以分段提供
    • handler_starttag:处理html的开始标签
      • tag:标签名称
      • attrs:标签属性列表
    • handler_data:处理标签里的数据体
    • data:数据文本

    第2步通过HTMLParser解析器解析网页html代码,获取所有信息

    # -*- coding: utf-8 -*-
    import urllib2
    import json
    from HTMLParser import HTMLParser
    
    class MovieParser(HTMLParser):
        def __init__(self):
            HTMLParser.__init__(self)
            self.movies=[]
        #重载父类方法
        #循环处理feed进来的所有的tag,以及标签对应的attrs
        def handle_starttag(self, tag, attrs):
            #给定tag的属性名attrname,获取属性的值
            def _attr(attrList,attrname):
                for attr in attrList:
                    if attr[0] == attrname:
                        return attr[1]
                return None
    
            if tag == 'li' and _attr(attrs,'data-title') \
                    and _attr(attrs,'data-category') == 'nowplaying':
                movie = {}
                movie['title'] = _attr(attrs,'data-title')
                movie['score'] = _attr(attrs,'data-score')
                movie['director'] = _attr(attrs,'data-director')
                movie['actors'] = _attr(attrs,'data-actors')
                self.movies.append(movie)
    
    #获取热播电影信息
    def nowplaying_movies(url):
        headlers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36'}
        req = urllib2.Request(url,headers=headlers)
        response = urllib2.urlopen(req)
        #定义解析器MovieParser继承自HTMLParser
        parser = MovieParser()
        #将response.read()喂给解析器,
        # 供解析器的handle_startendtag(self, tag, attrs)解析
        parser.feed(response.read())
        response.close()
        return parser.movies
    
    if __name__ == '__main__':
        url = 'https://movie.douban.com/nowplaying/qingdao/'
        movies = nowplaying_movies(url)
    
        #把movies以json格式打印出来
        print '%s' % json.dumps(movies,sort_keys=True,indent=4,separators=(',',':'))
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据AI

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值