数据解析之实战

目录

一、数据解析

1、获取页面中指定的页面内容。

2、编码流程

        ①指定URL

        ②发起请求

        ③获取响应数据

        ④数据解析

        ⑤持久化存储

3、数据解析分类

        ①正则

        ②bs4

        ③xpath(重点)

4、数据解析原理概述

        ①解析的局部的文件内容都会在标签之间或者标签对应的属性中进行存储

        ②进行指定标签的定位

        ③标签或者标签对应的属性中存储的数据进行提取(解析)

二、需求描述

 三、步骤

  1、检查URL的内容

        ①两种办法,推荐抓包

2、ajax检查

3、获取信息

 4、数据解析

 5、获取内容

   6、持久化处理 

四、源码


一、数据解析

1、获取页面中指定的页面内容。

2、编码流程

        ①指定URL

        ②发起请求

        ③获取响应数据

        ④数据解析

        ⑤持久化存储

3、数据解析分类

        ①正则

        ②bs4

        ③xpath(重点)

4、数据解析原理概述

        ①解析的局部的文件内容都会在标签之间或者标签对应的属性中进行存储

        ②进行指定标签的定位

        ③标签或者标签对应的属性中存储的数据进行提取(解析)

二、需求描述

        获取xx电影的喜剧排行榜的电影的图片

 三、步骤

  1、检查URL的内容

        ①两种办法,推荐抓包

                检查发现内容不是想要获取的页面

2、ajax检查

        

         在ajax返回的内容中找到了想要的内容

3、获取信息

        根据标头中所带的信息,可以知道URL和请求方法以及返回的类型

page_text = requests.get(url=new_url,headers=headers).json()

 4、数据解析

        根据返回得到的内容(列表类型列表里面存储的是字典),根据字典的特性,通过键去寻找对应的值

        for img in page_text:
            img_list.append(img['cover_url'])

 5、获取内容

        通过得到的URL再通过requests去获取所要的到的图片,因为图片是二进制文件,所以得到的结果用.content获取

        for img_url in img_list:
            img_data = requests.get(url=img_url, headers=headers).content

   6、持久化处理 

        图片的获取以及存储会比较慢,请耐心等待

img_name = img_url.split('/')[-1]
            imgPath = './douban_test/' + img_name
            with open(imgPath, 'wb') as fp:
                fp.write(img_data)

四、源码

        源码是获取图片的一个扩展,获取的是多页的图片,区别在于页面的URL上,这个区别只要通过对比几个URL就能找到差别。

# -*- coding: utf-8 -*-
import requests
import re
import os
import json
if __name__ == '__main__':
    #创建一个文件夹
    if not os.path.exists('./douban_test'):
        os.mkdir('./douban_test')
    headers = {
        'User-Agent': 'Mozilla  /5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36'
    }
    #设置一个通用的url模板
    # url = 'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=None&start=1&limit=20'
    url = 'https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=None&start={}&limit=20'
    for page in range(0,10):
        new_url = url.format(page*20)

        #使用通用爬虫对url对应的一整张页面进行爬取
        img_list = []
        page_text = requests.get(url=new_url,headers=headers).json()
    #     fp = open('./douban_test.json', 'w', encoding='utf-8')
    #     json.dump(page_text, fp=fp, ensure_ascii=False)

        for img in page_text:
            img_list.append(img['cover_url'])
        for img_url in img_list:
            img_data = requests.get(url=img_url, headers=headers).content
            img_name = img_url.split('/')[-1]
            imgPath = './douban_test/' + img_name
            with open(imgPath, 'wb') as fp:
                fp.write(img_data)

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值