动态数据采集

简介: 爬虫系列文章

动态加载

  • 需求:爬取豆瓣网中的电影详情数据,

  • 分析网站:

    • 当滚轮滑动到底部的时候,页面会发起ajax请求,且请求到一组电影详情数据。
    • 当滚轮不滑动的时候,页面显示的电影数据,通过对浏览器地址栏的url发起请求是请求不到的。
  • 动态加载的数据

    • 可见非即可得
    • 概念:通过非浏览器地址栏url请求到的数据(另外的一个新的请求请求到的数据)
    • 当我们对一个陌生的网站进行指定数据爬取之前,我们在写代码之前必须要做的一个事情就是校验你想要爬取的数据是否为动态加载的数据

      • 是动态加载的数据

        • 基于抓包工具进行全局搜索,锁定动态加载数据对应的数据包即可。从数据包中提取请求的url和请求方式和请求参数。
      • 不是动态加载的数据

        • 直接对地址栏的url发起请求就可以获取指定数据
import requests

url = 'https://movie.douban.com/j/chart/top_list'
#参数动态化
params = {
    "type": "17",
    "interval_id": "100:90",
    "action": "",
    "start": "20",
    "limit": "10",
}
response = requests.get(url=url,headers=headers,params=params)
page_text = response.json() #json返回的是序列号好的对象
#将电影名称和评分进行解析
for dic in page_text:
    name = dic['title']
    score = dic['score']
    print(name+':'+score)
  • 问题:如何检测页面中的数据是否为动态加载的数据?

    • 基于抓包工具进行局部搜索

      • 搜索到:不是动态加载数据
      • 搜索不到:是动态加载数据
  • 肯德基餐厅查询:http://www.kfc.com.cn/kfccda/storelist/index.aspx
  • 分析:

    • 数据为动态加载数据
    • 通过抓包工具的全局搜索捕获动态加载数据
import requests

url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
data = {
    "cname": "",
    "pid": "",
    "keyword": "北京",
    "pageIndex": "1",
    "pageSize": "10",
}
#参数:data是用来实现参数动态化,等同于get方法中的params参数的作用
response = requests.post(url=url,headers=headers,data=data)
page_text = response.json()
for dic in page_text['Table1']:
    pos = dic['addressDetail']
    print(pos)
 import requests

#想要获取所有页码对应的位置信息
url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op=keyword'
for pageNum in range(1,8):
    data = {
        "cname": "",
        "pid": "",
        "keyword": "北京",
        "pageIndex": str(pageNum),
        "pageSize": "10",
    }
    #参数:data是用来实现参数动态化,等同于get方法中的params参数的作用
    response = requests.post(url=url,headers=headers,data=data)
    page_text = response.json()
    for dic in page_text['Table1']:
        pos = dic['addressDetail']
        print(pos)
相关文章
|
6月前
|
传感器 数据采集 数据处理
振弦采集仪的操作方法及数据处理技术的一般步骤
振弦采集仪的操作方法及数据处理技术的一般步骤
振弦采集仪的操作方法及数据处理技术的一般步骤
|
3月前
|
存储 JavaScript 前端开发
ShareDB:构建实时应用从未如此简单
ShareDB:构建实时应用从未如此简单
79 0
|
5月前
|
数据采集 消息中间件 存储
数据采集方法
【6月更文挑战第21天】数据采集方法。
104 3
EMQ
|
6月前
|
数据采集 消息中间件 并行计算
NeuronEX 3.2.0 发布:增强数据采集、分析计算和管理功能
工业边缘网关软件 NeuronEX 3.2.0 版本现已正式发布,本次发布带来了一系列的增强功能和新特性,旨在为用户提供更多数据采集、分析计算以及管理的能力。
EMQ
107 2
NeuronEX 3.2.0 发布:增强数据采集、分析计算和管理功能
|
6月前
|
数据采集 缓存 监控
通过动态IP解决网络数据采集问题
通过动态IP解决网络数据采集问题
109 1
|
6月前
|
Prometheus 监控 关系型数据库
监控数据的几种采集方式
【1月更文挑战第14天】
|
数据采集 Java 大数据
大数据数据采集的数据采集(收集/聚合)的Logstash之强大的插件功能
在大数据领域中,Logstash是一款非常流行的数据采集工具。它具有丰富的插件功能,可以完成各种不同数据来源的数据采集任务。本文将介绍Logstash的插件功能,并为大家介绍几款强大的插件。
182 1
|
数据采集 JSON 大数据
大数据数据采集的数据采集(收集/聚合)的Logstash之数据采集流程的filter
在大数据领域中,Logstash是一款非常流行的数据采集工具。它可以从各种不同的来源收集和聚合数据,并将其转换成统一格式进行处理。而在Logstash的数据采集过程中,Filter是一个非常重要的环节,可以对数据进行过滤、裁剪、重组等操作。本文将分享如何使用Logstash的Filter功能,来优化数据采集流程。
118 1
|
数据采集 消息中间件 监控
大数据数据采集的数据采集(收集/聚合)的Logstash之数据采集流程的input
在大数据领域,数据采集是非常重要的一环。而Logstash作为一个开源的数据收集引擎,可以帮助我们轻松地实现数据的采集、聚合和传输等功能。本文将会对Logstash之数据采集流程的Input进行详细介绍。
129 1
|
数据采集 缓存 大数据
大数据数据采集的数据采集(收集/聚合)的Flume之数据采集流程的Selector的复制模式
在大数据处理和管理中,数据采集是非常重要的一环。为了更加高效地进行数据采集,Flume作为一种流式数据采集工具得到了广泛的应用。其中,Flume的Sink Processor模块是实现数据输出和处理的核心模块之一。本文将介绍Flume中的Selector复制模式,讲解其数据采集流程。
118 0