• 爬虫实例之豆瓣高分电影


    学了python这么久,终于写了一个小爬虫,虽然很简单,但是总算动手了。

    这个爬虫小程序爬取了豆瓣高分榜前100的电影名,所用到的知识也十分简单。

    以下是源码

    import re
    import requests
    import string
    class spider:
        def init(self):
            self.page = 0
            self.top_num = 1
            self.cur_url = "https://movie.douban.com/top250?start={page}&filter="
            self.datas = []
            #print("it's init!")
    
        def downloader(self,cur_page):
            try :
                my_page = requests.get(self.cur_url.format(page=cur_page * 25)).text
            except requests.urllib.error.URLError as e:
                if hasattr(e, "code"):
                    print("The server couldn't fulfill the request.")
                    print("Error code: %s" % e.code)
                elif hasattr(e, "reason"):
                    print("We failed to reach a server. Please check your url and read the Reason")
                    print("Reason: %s" % e.reason)
            #print("this is downloader!")
            return my_page
    
        def parser(self,Page):
            pat = re.compile(r'<span.*?class="title">(.*?)</span>')
    
            #返回一个列表
            title = pat.findall(Page,re.S)   
    
    
            for index,item in enumerate(title):
                if item.find("&nbsp") == -1:
                    self.datas.append("Top"+str(self.top_num)+" "+item)
                    #print(item)
                    self.top_num += 1
    
            #print("this is parser")
    
            
    
        def spider_main(self):
            self.init()
            while self.page < 4:
                Page = self.downloader(self.page)
                self.parser(Page)
                self.page +=1
    
    
    def main():
        print("开始爬虫")
        my_spider = spider()
        my_spider.spider_main()
        for item in my_spider.datas:
            print(item)
    
        print("爬虫结束")
    
    if __name__ == '__main__':
        main()

    之前学习了Python的基本数据结构,但是在用到时才发现学的比较零散,用的时候不知道该怎么用,还是需要更多的项目来练习。

    在这个简单的项目中,也出现了一些小问题:

    • 对于url的产生 没有理解到位,在网页下载器中,会有一个需要下载页面的url,而在这里,这个url是由初始url和一个page参数组成。因此,在下载器中应该传入一个page参数。
    • 对于类中变量的是不是需要self这个关键字没有搞清楚,导致在使用这些变量时处于一种“不清不楚”的状态。
    • 对于字符串的操作还不熟悉,需要练习

    总之啊,路还长

  • 相关阅读:
    SPAN和DIV的区别
    利用XMLHTTP无刷新添加数据之Post篇
    在Asp.net中上传大文件的解决方法
    在事务中执行批量复制操作
    Microsoft Visual SourceSafe 使用指南
    恢复只有MDF文件的MS SQL数据库
    配置sql server 2000以允许远程访问
    转: Bill Gates 哈佛大学毕业典礼演讲1
    用于对数据库进行操作的类库经验的总结
    用于对数据库进行操作的类库经验的总结 (二)
  • 原文地址:https://www.cnblogs.com/HJhj/p/7657780.html
Copyright © 2020-2023  润新知