zoukankan      html  css  js  c++  java
  • 爬虫实例之豆瓣高分电影

    学了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这个关键字没有搞清楚,导致在使用这些变量时处于一种“不清不楚”的状态。
    • 对于字符串的操作还不熟悉,需要练习

    总之啊,路还长

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/HJhj/p/7657780.html
Copyright © 2011-2022 走看看