博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Python3.5爬取豆瓣电影Top250
阅读量:6670 次
发布时间:2019-06-25

本文共 2866 字,大约阅读时间需要 9 分钟。

hot3.png

这一段时间,一直在折腾Python爬虫。已有的文件记录显示,折腾爬虫大概个把月了吧。但是断断续续,一会儿鼓捣python、一会学习sql儿、一会 调试OpenCV,结果什么都没学好。前几天,终于耐下心来,决定还是用python做一个小东西。想了想,决定从爬  开始。大学的时候,经常根据豆瓣评分选电影。大二大三的时候,有段时间,基本上一天一部地刷。那时候,也真清闲... 后来top电影看的差不多了,对国产片基本上没什么胃口。后来就改行看动漫来消遣,还记得考研那会儿,追《进击的巨人》,熬夜看呐。然后今年的封杀令让 《东京食尸鬼》、《寄生兽》、《火星异种》、《死神》等等一大批动漫都给禁播了。。。哎,扯远了。。。

1.准备工作

准备好工具 Python3.5 + requests + lxml + mysqlconnector

2.分析网页

豆瓣电影排行榜里,每个条目都是一致的,例如《这个杀手不太冷》的html代码如下:

  •   
        
          
    2      
            
                  
          
            
              
    这个杀手不太冷          
     / Léon          
     / 杀手莱昂  /  终极追杀令(台)                    
            
              导演: 吕克·贝松 Luc Besson   主演: 让·雷诺 Jean Reno / 娜塔丽·波特曼 ...          
     1994 / 法国 / 剧情 动作 犯罪        

            
              
              
    9.4          
              
    620387人评价                
              
    怪蜀黍和小萝莉不得不说的故事。        

                
  • 接下来,要解析的是:

    • 排名:2

    • 中文名:这个杀手不太冷

    • 外文名:Léon

    • 评分 : 9.4

    • 简评: 怪蜀黍和小萝莉不得不说的故事。

    使用lxml解析网页

    先解析出item条目: item = root.xpath('//ol/li/div[@class="item"]')然后排名: rank = item.xpath('./div[@class="pic"]/em[@text()]')[0]

    写出python代码,运行结果:

    1 9.6 希望让人自由。肖申克的救赎 ,The Shawshank Redemption2 9.4 怪蜀黍和小萝莉不得不说的故事。这个杀手不太冷 ,Léon3 9.4 一部美国近现代史。阿甘正传 ,Forrest Gump4 9.4 风华绝代。霸王别姬 5 9.5 最美的谎言。美丽人生 ,La vita è bella6 9.2 每个人都要走一条自己坚定了的路,就算是粉身碎骨。 海上钢琴师 ,La leggenda del pianista sull'oceano7 9.4 拯救一个人,就是拯救整个世界。辛德勒的名单 ,Schindler's List8 9.2 最好的宫崎骏,最好的久石让。 千与千寻 ,千と千の神し9 9.3 小瓦力,大人生。机器人总动员 ,WALLE10 9.1 失去的才是永恒的。 泰坦尼克号 ,Titanic...244 8.2 琼瑶阿姨在韩国的深刻版。假如爱有天意 ,245 8.4 爆米花动作电影新标杆。速度与激情5 ,Fast Five246 8.4 黑鹰坠落 ,Black Hawk Down247 8.5 一群演技精湛的戏骨,奉献出一个精致的黑帮小品,成就杜琪峰群戏的巅峰之作。枪火 ,火248 8.8 简简单单,回味悠长。刺猬的优雅 ,Le hérisson249 8.6 最冷的地方,有最温暖的感情。帝企鹅日记 ,La marche de l'empereur250 8.1 疯狂的石头

    实现代码:

    import requests from lxml import etreesession = requests.Session()for id in range(0,251,25):  URL = 'http://movie.douban.com/top250/?start=' + str(id)  req = session.get(URL)  req.encoding = 'utf8'			  # 设置网页编码格式  root=etree.HTML(req.content)					   #将request.content 转化为 Element  items = root.xpath('//ol/li/div[@class="item"]')  for item in items:	    #注意可能只有中文名,没有英文名;可能没有quote简评    rank,name,alias,rating_num,quote,url = "","","","","",""    try:      url = item.xpath('./div[@class="pic"]/a/@href')[0]      rank = item.xpath('./div[@class="pic"]/em/text()')[0]      title = item.xpath('./div[@class="info"]//a/span[@class="title"]/text()')      name = title[0].encode('gb2312','ignore').decode('gb2312')      alias = title[1].encode('gb2312','ignore').decode('gb2312') if len(title)==2 else ""      rating_num = item.xpath('.//div[@class="bd"]//span[@class="rating_num"]/text()')[0]      quote_tag = item.xpath('.//div[@class="bd"]//span[@class="inq"]')      if len(quote_tag)  is not 0:        quote = quote_tag[0].text.encode('gb2312','ignore').decode('gb2312').replace('\xa0','')      print(rank,rating_num,quote)      print(name.encode('gb2312','ignore').decode('gb2312') ,alias.encode('gb2312','ignore').decode('gb2312') .replace('/',','))    except:      print('faild!')      pass

    当然,也可使使用数据库保存!

    使用Python3.5爬取豆瓣电影Top250

    转载于:https://my.oschina.net/aichirou/blog/666072

    你可能感兴趣的文章
    我的友情链接
    查看>>
    Oracle IO问题解析(七)
    查看>>
    【HAVENT原创】k8s docker 管理 和 网页接口 监控系统
    查看>>
    1111111
    查看>>
    linux 学习前的准备 centos6的安装!
    查看>>
    Linux 下 IPsec-tools的使用
    查看>>
    ssh使用公钥授权不通过的问题解决
    查看>>
    iPad2 A5完美越狱获得重大进展--转载
    查看>>
    linux 调优 I/O 优化
    查看>>
    我的友情链接
    查看>>
    python内置函数2-callable()
    查看>>
    Python WindowsError
    查看>>
    nginx配置虚拟主机(2) - ttlsa教程系列之nginx
    查看>>
    postgresql安装
    查看>>
    零刻数据提供多地优质BGP双线接入服务
    查看>>
    基于微软office web apps实现在线预览文档
    查看>>
    okToAccept: WARNING! Your cache is running out of filedescriptors
    查看>>
    epel
    查看>>
    类中关于列表的应用
    查看>>
    [xmind] JEE - JMS 笔记
    查看>>