Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地

 

目录

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地

一、简单介绍

二、知识点

三、效果预览

四、实现步骤

五、关键代码


 

 

一、简单介绍

Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。Python是一种解释型脚本语言,可以应用于以下领域: Web 和 Internet开发、科学计算和统计、人工智能、教育、桌面界面开发、软件开发、后端开发、网络爬虫。

爬虫:一段自动抓取互联网信息的程序,从互联网上抓取对于我们有价值的信息。

 

二、知识点

1、import requests 进行网页数据请求获取;

2、把解析的数据保存到本地;

3、类 与 函数的封装(面向对象);

4、自动翻页获取所有信息,并智能判断是否是最后一页,结束爬取动作;

5、json 在 python 中的使用;

 

三、效果预览

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第1张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第2张图片

 

四、实现步骤

1、分析 网页 的数据,可以看出该网页每次加载 20 个热门电视剧,每加载一次 增加 20 个,如下图

https://movie.douban.com/tv/#!type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0 

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第3张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第4张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第5张图片

 

2、再者,他们的消息头网址也只是后面的 page_start= 在变化,如下图

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第6张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第7张图片

 

3、在通过消息头的网址,可以直接获取 当前数量的 20 个热门电视剧推荐,如下图

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第8张图片

 

4、所以综合分析,把网址格式化定义,判断档期获取热门电视剧推荐个数是否少于每页限制 20 个,少于,则说明去到最后了,即可退出程序

https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start={}

 

5、根据该规律,打开 Pycharm ,新建工程,如下图

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第9张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第10张图片

 

6、新建一个 python 文件,如下图

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第11张图片

 

7、新建 python 脚本,书写逻辑,如下图

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第12张图片

 

8、选中脚本,右键 run 运行脚本,效果如下图,并且指定路径保存了热门电视推荐信息

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第13张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第14张图片

Python 爬虫 之 爬取豆瓣热门电视剧推荐信息,并 json 形式保存到本地_第15张图片

 

五、关键代码


import requests     # 引入 requsets 库
import json         # 引入 json 库
class DoubanTVSpider:   # 爬取豆瓣热门电视剧推荐信息
    def __init__(self):
        self.url_temp = "https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start={}"
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0"
        }

    def parser_url(self, url):
        """ 发送请求,获取响应

        :param url: 网址信息
        :return: 返回相应信息
        """
        print(url)
        response = requests.get(url, headers = self.headers)
        return response.content.decode()

    def get_content_list(self, json_str):
        """ 获取json 列表信息

        :param json_str: json 字符串
        :return: json 数据
        """
        dict_ret = json.loads(json_str)
        content_list = dict_ret["subjects"]     # json 数据 的字典关键字 "subjects"
        return content_list

    def save_content_list(self, content_list):
        """ 保存数据到本地

        :param content_list: 数据列表
        """
        # 注意因为有中文,编码格式建议 utf-8
        with open("doubantv.txt", "a", encoding="utf-8") as f:
            # json 格式保存数据 因为有中文 ensure_ascii=False, indent=4 缩进 4 个空格
            f.write(json.dumps(content_list, ensure_ascii=False, indent=4))
            f.write("\n")   # 写完一段 换行

    def run(self):
        num = 0
        while True:
            url = self.url_temp.format(num)
            # 1、发送请求,获取响应
            json_str = self.parser_url(url)
            # 2、提取数据
            content_list = self.get_content_list(json_str)
            # 3、保存数据
            self.save_content_list(content_list)
            # 4、数据数量少于 20 说明到最后了,跳出循环
            if len(content_list) < 20:
                print("豆瓣热门电视剧推荐信息收集完成")
                break

            num += 20    #每页推荐限制 20,故下页 +20

if __name__ == "__main__":    # run 本脚本才执行下面代码
    doubai_tv_spider = DoubanTVSpider()
    doubai_tv_spider.run()

 

你可能感兴趣的:(python)