热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3实现豆瓣top250电影信息爬取

#python3#网页基本电影信息提取,即不包括动态内容(评论内容等)#未写入文件,可自行添加#使用bs4,而不是正则#老规矩,有啥问题联系1467288927,一起

#python3

#网页基本电影信息提取,即不包括动态内容(评论内容等)

#未写入文件,可自行添加

#使用bs4,而不是正则

#老规矩,有啥问题联系1467288927,一起交流学习奋斗

  1. ##https://movie.douban.com/top250?start=0&filter=
    ##https://movie.douban.com/top250?start=25&filter=
    ##https://movie.douban.com/top250?start=50&filter=
    ##https://movie.douban.com/top250?start=225&filter=
    import time
    import requests
    from bs4 import BeautifulSoup
    ##import re
    class spider_douban():
        def __init__(self):
            self.href = []#电影链接
            self.movie_name = []#电影名:list中英other
            self.derector_act = []#电影导演和主演等
            self.review = []#简评
            self.comment = []#评分和评价数
            self.errors = []
        def getHtml(self,page):
            url = 'https://movie.douban.com/top250?start=%s&filter=' %page
            print("url:  "+url)
            req = requests.get(url)
        ##    req.encoding = "UTF-8"
            return req.text
    
        #bs4
        def parseHtml_bs4(self,text):
    
            soup = BeautifulSoup(text,"lxml")#解析器lxml或者html.parser
            cOntent= soup.select("#wrapper #content")#返回列表,列表内的内容才能select
            title = content[0].select("h1")[0].text#list没有text,所以得[0]先取出
        ##    print(title)
            content2 = content[0].select(".article .grid_view")
    ##        print(len(content2))
            for li in content2[0].select("li"):
                try:
                    #li>item下主要两个标签pic和info
            ##        pic_href = li.select(".item .pic")#该电影链接和图片,info中也有电影链接
            ##        href = pic_href[0].select("a")[0]["href"]
                    #info下主要两个标签hd>a和bd
                    hd = li.select(".item .info .hd a")#包括电影链接、中英文名、简评
                    self.href.append( hd[0]["href"])#电影链接
                    movie_namec_e = hd[0].select(".title")#返回列表[中文名,英文名]
            ##        for i in movie_namec_e:
            ##            print(i)
            ##        break
                    zh_name = movie_namec_e[0].text
                    try:#可能不存在英文名
                        en_name = movie_namec_e[1].text
                    except:
                        en_name = None
            ##        print(en_name)
            ##        break
                    try:
                        oth_name = hd[0].select(".other")[0].text
                    except:
                        oth_name = None
                    self.movie_name.append([zh_name,en_name,oth_name])
            ##        for i in L:
            ##            print (i)
                    bd = li.select(".item .info .bd")#包括导演、主演、发行时间国家、电影类型;评星评分和评价数;简评
            ##        print(bd)
                    movie_infor = bd[0].select("p")
                    self.derector_act.append(movie_infor[0].text)
                    self.review.append(movie_infor[1].text)#简评
            ##        print(derector_act,comment)
                    L2 = []
                    for span in bd[0].select(".star"):
            ##            print(span.text)
                        if span.text :
                            L2.append(span.text.strip("\n"))#评分和评价数
                    self.comment.append(L2)
            ##        print(L2)
        ##           break
                except Exception as e:
                    self.errors.append(e)
                    
        def save(self):
            if self.errors:#保存error信息
                print("(self.errors)It's bad,there is something wrong waiting for handling!!")
            else:
                print(None,"good")
    ##        for href,movie_name,derector_act,review,comment in\
    ##            zip(self.href,self.movie_name,self.derector_act, self.review, self.comment):
    ##            print(href,movie_name,derector_act,review,comment)
    ##            print("----------------")
        def page_to_page(self,start,end):
            i = 0
            while i <=9:
                getHtml(25*i)
    def start():
        startt = time.clock()
        errors = []#存放网页打不开等错误
        i = 0
        demo = spider_douban()
        while i<=9:
            try:
                text = demo.getHtml(25*i)
            except Exception as e:
                text = False
                errors.append(e)
            finally:
                if text:
                    demo.parseHtml_bs4(text)
                i +=1
        demo.save()
        if errors:
            print("It's bad,there is something wrong waiting for handling!!")
        else:
            print(None,"perfect!!")
        endt = time.clock()
        print("run over!!cost total_time:%s"%(endt - startt))
            
                
    if __name__ =="__main__":
        start()
    



推荐阅读
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • Scala 实现 UTF-8 编码属性文件读取与克隆
    本文介绍如何使用 Scala 以 UTF-8 编码方式读取属性文件,并实现属性文件的克隆功能。通过这种方式,可以确保配置文件在多线程环境下的一致性和高效性。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 本文介绍如何使用Perl编写一个简单的爬虫,从丁香园网站获取意大利的新冠病毒感染情况。通过LWP::UserAgent模块模拟浏览器访问并解析网页内容,最终提取所需数据。 ... [详细]
  • Struts与Spring框架的集成指南
    本文详细介绍了如何将Struts和Spring两个流行的Java Web开发框架进行整合,涵盖从环境配置到代码实现的具体步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 深入理解Tornado模板系统
    本文详细介绍了Tornado框架中模板系统的使用方法。Tornado自带的轻量级、高效且灵活的模板语言位于tornado.template模块,支持嵌入Python代码片段,帮助开发者快速构建动态网页。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
author-avatar
手机用户2502896043
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有