判断使用什么技术来爬取数据详细讲解

Python网络爬虫技术---第二讲 在上面的示例中,我们定义了一个基础URL为'https://www.example.com',以及一个相对URL为'/path/to/page.html'。最后,我们打印输出合并后的完整URL。在上面的示例中,我们创建了一个RobotFileParser对象rp,然后使用set_url()函数设置要解析的Robots.txt文件的URL地址,并使用read()函数读取Robots.txt文件的内容。请注意,urljoin函数还可以用于合并多个URL,不仅限于基础URL和相对URL的合并。 阅读详情

判断目标网站使用哪种数据加载形式是爬虫开发的第一步,也是最关键的一步。以下是系统化的诊断方法和步骤:


核心诊断流程 (使用浏览器开发者工具 - Chrome/Firefox为例)

  1. 初始观察 (肉眼判断)

    • 页面加载后数据是否立刻可见?
      • 是 → 可能是静态HTML或服务器端渲染。
      • 否 → 数据区域显示"Loading…"或空白 → 强烈提示JavaScript动态渲染 (AJAX/前端框架)。
    • 交互行为: 滚动页面、点击标签/分页按钮后,新数据是否动态出现?
      • 是 → 几乎肯定是JS动态加载 (API) 或 WebSocket。
    • 数据呈现方式:
      • 清晰文本 → 易于解析。
      • 图片/Canvas → 可能使用图片反爬。
  2. 查看网页源代码 (右键 -> 查看网页源代码 或 Ctrl+U)

    • 搜索目标数据: 在源代码文本中直接搜索你想要的关键数据 (如产品名称、价格、用户名)。
      • 找到数据:
        • 数据在可见的HTML标签内 → 纯静态HTML。
        • 数据在 <script> 标签内的JSON对象中 (如 window.__DATA__ = {...}) → 服务器端渲染中的内联JSON。
        • 数据在HTML元素的 data-* 属性中 (如 <div data-product='{"name": "..."}'>) → 服务器端渲染中的隐藏属性。
        • 数据在HTML注释中 <!-- {"name": "..."} --> → 服务器端渲染中的注释数据 (较少见)。
      • 找不到数据: 目标数据完全不存在于源代码中 → 极大概率是JS动态渲染。
  3. 分析网络请求 (F12 -> Network 面板)

    • 刷新页面/触发数据加载: 清空面板 (点 🚫),然后刷新页面或执行触发数据加载的操作 (如滚动、点击按钮)。
    • 筛选请求类型 (重点看):
      • XHR 或 Fetch: 这是 AJAX/API 请求的主要来源!绝大多数动态数据通过这里加载。
      • JS: 加载的JavaScript文件,可能包含数据或生成动态参数/Token的逻辑。
      • Doc: 初始的HTML文档请求。
      • WS (WebSocket): 实时数据流连接。
      • Img / Font / CSS: 通常不是数据源。
    • 检查响应内容:
      • 在 XHR/Fetch 请求中:
        • 找到目标数据加载时发出的请求。
        • 点击该请求,查看 Preview 或 Response 标签页。
        • 看到清晰的 JSON 或 XML 结构数据 → 恭喜!这是最理想的 API 接口。
        • 看到 HTML 片段 → 可能是服务器返回的HTML块,需要像解析静态HTML一样处理 (复杂度较高)。
        • 看到乱码或加密数据 → 可能使用了动态参数签名/加密,需要逆向JS。
      • 在 WS 请求中: 查看 Frames 标签页,看是否有持续的、结构化的数据推送。
    • 分析请求细节:
      • Headers 标签页:
        • Request Headers: 检查 Cookie, Authorization, User-Agent, Referer 以及是否有自定义签名Header (如 X-Sign)。这些都是模拟请求的关键。
        • Query String Parameters / Payload: 查看请求参数。注意是否有看起来像时间戳 (ts, _t)、随机数 (nonce, rand)、或加密字符串 (sign, token) 的参数。这些是动态签名/加密的标志。
      • Initiator 列: 点击可以跳转到是哪个JS文件发起了这个请求,帮助定位生成参数的JS代码。
  4. 检查DOM结构与JS执行 (Elements 面板 和 Console 面板)

    • Elements 面板:
      • 查看渲染完成后的DOM树 (包含JS动态插入的内容)。
      • 对比 View Source 的原始HTML,确认哪些元素是动态添加的。
      • 搜索目标数据是否存在于 data-* 属性中 (即使不在 View Source 里,也可能在动态渲染后的DOM里)。
    • Console 面板:
      • 尝试输入可能的全局变量名 (如 window, 然后按Tab键查看属性),看是否能找到包含数据的对象 (如 window.initialData, app.state)。如果找到,数据可能来自内联JSON。
    • 全局搜索 (Ctrl+Shift+F):
      • 在整个页面资源 (HTML, JS, CSS) 中搜索关键数据字段名 (如 "productName", "price") 或数据片段。这有助于定位内联JSON或API URL。
  5. 禁用JavaScript测试

    • 在浏览器设置中临时禁用JavaScript,然后刷新目标页面。
    • 观察:
      • 页面布局崩了,但目标数据以文本形式可见 → 数据是服务器端渲染 (存在于初始HTML)。
      • 页面基本框架在,但目标数据区域完全空白 → 数据依赖JS动态加载。
    • 这是区分服务器端渲染和纯客户端渲染的终极方法之一。

判断类型的关键特征总结表

数据加载形式关键判断特征网络请求线索源代码线索
1. 纯静态HTML数据在 View Source 中直接可见;禁用JS后数据仍在。主要请求是 Doc (HTML);无相关XHR。数据在 <body> 内的普通标签中。
2. JS动态渲染 (API)View Source 无目标数据;禁用JS后数据消失;滚动/点击加载新数据。有明确的 XHR/Fetch 请求返回 JSON/XML/HTML;请求可能含动态参数/Token。无目标数据;可能包含初始化框架的JS。
3. API接口 (理想)同JS动态渲染,但返回数据是干净的JSON/XML。XHR/Fetch请求的 Response 是结构化的JSON/XML;URL常含 api, data, graphql 等词。无目标数据。
4. WebSocket数据持续、实时更新(如股票行情、聊天)。Network 面板有 WS 或 WebSocket 类型连接;查看 Frames 有数据流。无目标数据;包含建立WebSocket连接的JS代码。
5. 服务器渲染-内联JSONView Source 中数据存在于 <script> 标签内(如 window.__INITIAL_STATE__);禁用JS后数据可能可见。无加载数据的额外XHR(数据在初始HTML里)。在 <script> 标签内找到JSON字符串。
6. 服务器渲染-隐藏属性View Source 或渲染后DOM中,数据在元素的 data-* 属性里。无加载数据的额外XHR(数据在初始HTML里)。在HTML标签属性中找到数据 (如 <div data-product='{"id": 123}'>)。
7. 图片/Canvas反爬关键信息(价格、电话号)显示为图片或Canvas绘制,无法选中复制。有加载图片 (Img) 或包含绘制逻辑的JS (JS) 请求。包含 <img>, <canvas> 标签或操作Canvas的JS代码;无对应文本。

实用技巧与注意事项

  1. 从易到难: 优先检查 View Source 和 Network -> XHR,这是最高效的起点。
  2. 关键词搜索: 在 View Source 和 Network 面板全局搜索数据片段或字段名。
  3. 关注时序: 在 Network 面板按时间线 (Timing 列) 排序,找到数据加载时刻发生的请求。
  4. 模拟操作: 精确触发你关心的数据加载动作(如点击“加载更多”),观察此时新增的网络请求。
  5. 参数分析: 对可疑的XHR请求,重点看 Headers (尤其是Cookie/Token) 和 Payload/Query String (找动态参数)。
  6. JS调试: 当遇到加密参数时,利用 Initiator 跳转或全局搜索参数名/加密函数名,在 Sources 面板打断点调试JS。
  7. 无头浏览器备用: 当所有分析失败或网站极度复杂时,直接用 Selenium/Playwright 获取渲染后HTML,但这应是最后手段。
  8. 留意框架特征: 现代前端框架 (React, Vue, Angular) 基本都走API路线。查看网页源码中的JS文件名或 <meta> 标签有时能发现框架线索。

总结: 判断的核心在于 View Source 有无数据 + Network 面板的XHR/Fetch请求分析。熟练掌握开发者工具,尤其是Network面板的使用,是高效识别数据来源的不二法门。遇到困难时,按上述流程一步步排查,绝大多数网站的数据加载方式都能被准确识别。

如何用python爬取天气预报,python爬虫爬取天气数据 大家好,本文将围绕python爬虫爬取天气数据讲解展开说明,如何用python爬取天气预报是一个很多人都想弄明白的事情,想搞清楚python爬虫爬取天气数据需要先了解以下几个事情。天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。 阅读详情

相关推荐

使用Python爬取淘宝两千款套套

各位同学们,好久没写原创技术文章了,最近有些忙,所以进度很慢,给大家道个歉。 > 警告:本教程仅用作学习交流,请勿用作商业盈利,违者后果自负!如本文有侵犯任何组织集团公司的隐私或利益,请告知联系猪哥删除!!! 一、淘宝登录复习 前面我们已经介绍过了如何使用requests库登录淘宝,收...

1万+

再续抓数据经验谈--找到数据来源的方法

说一些小技巧,分享给需要在互联网上,找数据,然后接收的。 往往一个网页上面呈现的内容,来源有很多个,浏览器会根据脚本的调用,访问很多个服务器地址,所以我们要抓取数据,最好知道数据的源头, 直接从源头获取再进行解析。 比如我用的chrome浏览器,火狐也更好。 1.右击页面,从菜单中选择“审查元素”; 2.选择Network,功能栏,然后再F5,就可以看到整个页面内容的数据来源。 3.可以

极客神功 1769

爬取某家网二手房数据(详细教程)

这里写目录标题项目描述:项目实施:1. 确定目标1.1 先来说第一个页面上述设置的目的是:所以我们可以在代码中这样呈现:1.2中间的列表部分下面的翻页部分:1.3 第二个页面从价格部分可以获取到:参考总价、单价从所在区域可以获取到:小区名称、大区域+小区域基本信息+交易信息数据如下图:最后是地图部分的数据:2. 流程设计3. 主要代码复现核心代码分析,完整代码看链接:获取当前条件下的房屋数据个数:判断是否超过3000,若超过则进行第二级筛选,若未超过则直接获取数据4. 运行完整代码:总结: 今天分享一篇爬虫

杜小白Blog 7655

js判断是否是搜索引擎(蜘蛛)、爬虫

【代码】js判断是否是搜索引擎(蜘蛛)、爬虫。

weixin_45791806的博客 1390

使用Python网络爬虫爬取数据并对其进行可视化分析,加入邮件进行判断爬取过程中是否存在错误

一、设计目的与要求1、设计目的通过本次课程设计,目的是加深、巩固对本门课程基础理论知识的掌握,理论联系实际,充分认识通用爬虫的网页分类、爬虫要遵守的协议、爬取及解析网页的流程。能够熟练运用urllib库或requests库获取网页源代码,掌握正则表达式、Xpath语法、BeautifulSoup模块的使用规则,会使用re、lxml、bs4、json等进行数据的解析,会使用Selenium工具抓取动态网页并解析存储爬虫数据,认识Scrapy框架的架构及运作流程,掌握Scrapy框架的基本操作,学会使用爬虫框架

sgsgsgwe的博客 2076

Python爬取网页内文本内容,python爬取网页详细教程

本文介绍Python爬虫入门教程,主要讲解如何使用Python爬取网页数据,包括基本的网页数据抓取、使用代理IP和反爬虫技术。一、Python爬虫入门Python是一门非常适合爬虫的编程语言。它具有简单易学、代码可读性高等优点,而且Python爬虫库非常丰富,使用Python进行爬虫开发非常方便。在这个程序中,我们使用了requests库来发送HTTP请求,并使用BeautifulSoup库来解析HTML文档。通过这两个库,我们可以轻松地获取网页数据,进而进行数据分析和处理。二、使用代理IP。

2301_81900386的博客 2874

满足你的好奇心!一键解析网站所使用的技术栈!

一键获取网站背后使用的技术栈

763

微博话题下的数据爬取

1、前言 新浪微博中,一个话题下各个媒体或用户发表在平台发表的信息是舆情研究的一个很重要的数据来源,这里记录一下一个话题下数据的爬取方式,以“#美国疫情#”话题为例。 2、话题下数据爬取 首先参考这篇文章,分析话题下数据爬取的结构,然后仿照示例得到如下代码: import requests from urllib.parse import urlencode from pyquery import PyQuery as pq import time import xlwt #设...

小翠儿,上酸菜 7803

5 个查找网页视频来源的方法

如果需要引用视频,可能需要标注原创、检查版权或获取完整视频,但可能遇上即使在网页上经过大量搜索,也找不到结果。所以,以下我介绍了 5 种方法可以帮助你找到网页视频来源。

TOPSTIP的博客 2万+

使用IntelliJ IDEA配置版本管理(SVN和Git)

在开发过程中,版本管理是必不可少的一部分,它可以帮助团队协作、管理代码历史记录,并且提供了代码回滚和分支管理等功能。本文将介绍如何使用IntelliJ IDEA配置版本管理,包括SVN和Git两种方式,另外列举了常见的问题并指导修复,以帮助开发者更高效地进行代码管理和协作。

2870

PS/Ai/PR/AE等adobe出现正版弹窗提示:Your non-genuine Adobe app will be disabled soon解决办法

就是用专门的清理工具下载,清理工具在文章下方。然后新建三个空的记事本文件,重命名为 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。在该文件目录中,分别找到 Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe,然后在防火墙入站规则里,阻止Adobe Genuine Launcher.exe,AdobeGCClient.exe,AGMService.exe。

Q82556499的博客 1万+

爬取豆瓣电影的评论

本文章主要对电影的评论信息进行爬取,包括:用户,评分,评论时间,评论内容等

cutto的博客 2058

DolphinScheduler租户配置踩坑实录:手把手教你修复‘tenant not exists‘报错

本文深度解析DolphinScheduler的租户模型,并提供一套从界面到数据库的系统性排查流程,手把手教你修复常见的'tenant not exists'报错。文章揭示了该错误的本质是用户与租户数据关联不一致,并给出了通过UI或SQL更新的具体修复方案,同时分享了根因分析与预防措施,帮助用户从根本上理解和避免此类问题。

2w3e4r5t6y的博客 541

爬取使用了Ajax技术的网页中的数据

Ajax是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,使网页实现异步更新。这意味着在不重新加载整个网页的情况下,可以对网页的某部分进行更新。怎么判断一个网页是否使用了ajax技术呢?可以点击网页上任意更新网页内容的按钮,看一下网页的url(Uniform Resource Locator)是否发生变化,如果没有变化,应该就是使用了ajax技术。使用了这个技术的网页对应的html源代码里面没有包含我们需要的所有信息,这时单单使用requests库再用bs4库解析的套路就行不通了。

Yuansheng She's blog 728

微信抢红包神器自动抢软件

微信抢红包神器自动抢软件

weixin_44006731的博客 8080

一次点击跑通:用 Postman 自动获取并携带 CSRF token,测试 SAP OData 写操作

SAP OData 写操作自动化测试方案 针对 SAP Gateway OData 服务写操作中常见的 CSRF token 验证问题,本文提出了一套基于 Postman 的自动化解决方案: 问题分析:解释了 CSRF token 的验证机制及其必要性,说明手工测试效率低下的原因 解决方案: 使用 Postman 环境变量存储 token 通过脚本自动获取并传递 token 利用 Collection Runner 实现一键执行 实施步骤: 创建环境变量存储 token 第一个请求获取 token 并存入变

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 303

Python爬取天气数据及可视化分析!详细讲解

天气预报我们每天都会关注,我们可以根据未来的天气增减衣物、安排出行,每天的气温、风速风向、相对湿度、空气质量等成为关注的焦点。本次使用python中requests和BeautifulSoup库对中国天气网当天和未来14天的数据进行爬取,保存为csv文件,之后用matplotlib、numpy、pandas对数据进行可视化处理和分析,得到温湿度度变化曲线、空气质量图、风向雷达图等结果,为获得未来天气信息提供了有效方法。

2301_78095812的博客 3874

YOLOv11全方位改进指南:卷积层、轻量化、注意力、损失函数等创新优化一览

YOLOv11通过八大核心模块的创新设计,在保持YOLO系列实时性的同时显著提升检测精度。本文提出的可变形卷积DCNv4多模态注意力动态解耦头等创新方案,已在工业质检、自动驾驶、无人机巡检等领域成功应用。完整项目地址预训练模型:包含从nano到x六个规格在线演示创新声明首次在YOLO系列集成DCNv4,小目标检测AP提升8.2%提出多模态混合注意力(MMAttention),兼顾通道与空间关系动态标签分配策略使训练效率提升40%

QQ_778132974的博客 1019

python爬取网页数据步骤,python爬取网页详细教程

大家好,本文将围绕利用python爬取简单网页数据步骤展开说明,怎么用python爬取网站上的数据是一个很多人都想弄明白的事情,想搞清楚python爬取网页数据步骤图解需要先了解以下几个事情。大家好,小编为大家解答利用python爬取简单网页数据步骤的问题。很多人还不知道python爬取网页数据步骤图解,现在让我们一起来看看吧!下面就按这个路线逐一讲讲各部分的内容;HTTP协议是一个应用层面向对象协议,也叫超文本传输协议。

jaskonyee的博客 1397

Hadoop在大数据领域的电商数据分析案例

随着电商行业的迅猛发展,每天都会产生海量的数据,如用户浏览记录、购买行为、商品信息等。如何从这些数据中提取有价值的信息,为电商企业的决策提供支持,成为了电商企业面临的重要问题。Hadoop作为一个开源的分布式计算平台,具有高可靠性、高扩展性和高效性等特点,能够很好地处理大数据。本文的目的就是通过实际案例,详细介绍Hadoop在电商数据分析中的应用,范围涵盖了从数据采集、存储到分析的整个流程。本文首先介绍背景信息,让读者了解Hadoop在电商数据分析中的重要性和应用场景。

Java大师兄的博客 1178

NLP高频面试题(一)——Transformer的基本结构、作用和代码实现

本文详细介绍了Transformer模型的基本结构和PyTorch代码实现过程。首先解析了Transformer的核心组成部分,包括嵌入层、多头自注意力机制、位置编码、前馈神经网络、编码器和解码器等模块,并通过清晰的代码示例逐步展示了如何在PyTorch中构建完整的Transformer模型。文末提供了一个可运行的简单示例,帮助读者快速理解并实践Transformer的核心原理与实现方法。

WeLearnNLP 1026

爬虫技术详解:动态网页与静态网页数据爬取实践

在当今信息爆炸的时代,网络爬虫技术成为了获取网络数据的重要手段。本文将详细介绍如何使用Python语言,针对动态网页和静态网页进行数据爬取。我们将依次探讨动态网页的第一个接口、第二个接口爬取,静态网页爬取,以及完整网页爬取的实现方法。本文详细介绍了动态网页和静态网页的爬取技术,包括和params的使用,JSON字符串处理的注意点,以及如何使用lxml获取静态网页数据。通过这些技术,我们可以有效地从网络中获取所需的数据。

m0_62999929的博客 4328

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python批量爬取高德AOI边界数据+GIS可视化(超详细)

一、需求 爬取高德地图的AOI区域(如下)并进行可视化存储,且保留AOI的属性信息。 二、使用的工具: Python IDLE、记事本编辑器、ArcGIS 10.2、申请的高德开发者KEY(免费)。 三、实现分析及思路 博主在浏览博客时得到了一个链接,能够根据aoi编号检索aoi信息: https://ditu.amap.com/...

Smart3S的博客 4万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

使用Selenium爬取网站表格类数据

本文转载自一下网站:Python爬虫(5):Selenium 爬取东方财富网股票财务报表 https://www.makcyun.top/web_scraping_withpython5.html 需要学习的地方: 1.Selenium的安装,配置 2.Selenium的初步使用(自动翻页) 利用Selenium爬取东方财富网各上市公司历年的财务报表数据。 摘要: 现在很多网...

weixin_30550081的博客 1945

有什么技术可以更高效的爬取数据

之前我们学习了在Python爬虫中使用HTTP代理,现在我们遇到的问题是如何更高效地爬取数据。我需要结合之前的教程,深入分析用户的需求。

weixin_44617651的博客 1495
上一篇: 爬虫的几种方式(使用什么技术来进行一个爬取数据)
下一篇: 逆向工程API和无头浏览器的区别
小李不秃头♛
博客等级 码龄2年 619粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值