day03 -数据分析之豆瓣爬虫练习

一、python数据类型与json数据类型转换
在这里插入图片描述

  • json.loads(json字符串) 将json类型转换为字典类型
  • json.dumps(python类型) 将python类型转换为json类型
  • json.load(json字符串) 将j类文件对象转换为字典类型
  • json.dump(python类型) 将json类型转换为类文件对象

    具有read()或者write()方法的对象就是类文件对象
    f = open(“a.txt”,”r”) f就是类文件对象

二、抓取豆瓣中每一页的美剧电视剧并保存

import requests
import json


class DouBan():
    
    def __init__(self):
        self.headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Mobile Safari/537.36"}
        self.start_url = 'https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=电视剧&start={}&countries=美国'
    def parse_url(self,url):     # 获取第一页数据
        '''获取响应数据'''
        response = requests.get(url,headers=self.headers)
        print(url)
        return response.content.decode()      # 返回字符串型
    
    def get_data(self,html_str):
        '''提取数据'''
        html_dict = json.loads(html_str)      # 返回字典类型
        html_list = html_dict['data']      # html_list均是字典类型
        return html_list
    
    def save_html(self,html_str,html_list):
        for temp_html in html_list:          # html为字典类型
            with open('douban.txt','a',encoding='utf-8') as f:
                f.write(json.dumps(temp_html,ensure_ascii=False))
                f.write('\n')             # 每行存储一个信息         
        print('保存成功')
    
    def run(self):
        '''控制整体的运行'''
        num = 0
        while True:
            # 1.创建url
            url = self.start_url.format(num)
            #2.发送请求,获取响应
            html_str = self.parse_url(url)
            #3.提取数据
            html_list = self.get_data(html_str)
            #4.保存数据
            self.save_html(html_str,html_list)
            if len(html_list) < 20:
                break
            #4.构造下一页url
            num += 20
        
if __name__ == '__main__':
    douban = DouBan()
    douban.run()
发布了30 篇原创文章 · 获赞 0 · 访问量 275

猜你喜欢

转载自blog.csdn.net/qq_36334897/article/details/105148233