scrapy初始第三波——CrawlSpider爬取拉勾招聘网

CrawlSpider爬取拉勾网,解决302问题。 前言:     在慕课上买了个付费视频,里面有一章是讲用CrawlSpider来爬取拉勾网,可能因为视频录的时候比较早,老师没加headers,也没用cookie所有的拉勾的工作的详情页面就全部200了,但是自己动手的时候,怎么都是302,去网上查了查,说是加上cookie和headers就可以了,自己动手试了试还真是成功了,拿出来和大家分享一下 1.Selenium获得登陆的cookie: ... 阅读详情

一,前言

  之前利用scrapy爬取伯乐在线,知乎时是用到scrapy的basic模板,即Spider,这次用CrawlSpider来爬取拉勾网的招聘信息

  CrawlSpider基于Spider,但是可以说是为全站爬取而生,是目前最流行的scrapy模板


二,创建工程

在cmd中cd进入项目的目录,然后输入:scrapy gensipder -t crawl lagou  www.lagou.com

默认生成:


三,简要说明

CrawlSpider是爬取那些具有一定规则网站的常用的爬虫,它基于Spider并有一些独特属性,也就是之前spider的爬取规则现在也适用,下面的参数可以按ctrl点击CrawlSpider获取源码


  • rules: 是Rule对象的集合,用于匹配目标网站并排除干扰
  • parse_start_url: 用于爬取起始响应,必须要返回Item,Request中的一个。

因为rules是Rule对象的集合,所以这里也要介绍一下Rule对象

它有几个参数:linkExtractor、callback=None、cb_kwargs=None、follow=None、process_links=None、process_request=None

  • callback为回调函数,传入一个str,即回调函数的名字
  • follow为boolean类型,为true就继续跟踪,为false则不往下跟踪

其中的linkExtractor既可以自己定义,也可以使用已有LinkExtractor类,主要参数为:

  • allow:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。
  • deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。
  • allow_domains:会被提取的链接的domains。
  • deny_domains:一定不会被提取链接的domains。
  • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。还有一个类似的restrict_cs
四,拉勾招聘网招聘信息的爬取

4.1  rule的编写

输入拉勾网首页:https://www.lagou.com/

观察职位的url:https://www.lagou.com/jobs/3157876.html   为https://www.lagou.com/jobs/\d+.html  格式

此外我们在进入职位url之前必须从 https://www.lagou.com/zhaopin/Android/  ,https://www.lagou.com/gongsi/j118082.html之类的url进入,所以匹配https://www.lagou.com/zhaopin/*    https://www.lagou.com/gongsi/j\d+

4.2 parse_item的编写

这里不详细分析了,在如图一个个用css,或者xpath分析

具体代码如下:

# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from ArticleSpider.items import FirstItemLoader, LagouJobItem

class LagouSpider(CrawlSpider):
    name = 'lagou'
    allowed_domains = ['www.lagou.com']
    start_urls = ['https://www.lagou.com/zhaopin/Python/']

    rules = (
        Rule(LinkExtractor(allow=("zhaopin/.*",)),follow=True),
        Rule(LinkExtractor(allow=("gongsi/j\d+.html",)), follow=True),
        Rule(LinkExtractor(allow=r'jobs/\d+.html'), callback='parse_job', follow=True),
    )


    def parse_job(self, response):
        #解析拉勾网的职位
        # pass
        # #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
        # #i['name'] = response.xpath('//div[@id="name"]').extract()
        # #i['description'] = response.xpath('//div[@id="description"]').extract()
        item_loader = FirstItemLoader(item=LagouJobItem(),response=response)
        item_loader.add_css("title", ".job-name::attr(title)")
        item_loader.add_value("url", response.url)

        item_loader.add_css("salary", ".job_request .salary::text")
        item_loader.add_xpath("job_city", "//*[@class='job_request']/p/span[2]/text()")
        item_loader.add_xpath("work_years", "//*[@class='job_request']/p/span[3]/text()")
        item_loader.add_xpath("degree_need", "//*[@class='job_request']/p/span[4]/text()")
        item_loader.add_xpath("job_type", "//*[@class='job_request']/p/span[5]/text()")

        item_loader.add_css("tags", '.position-label li::text')
        item_loader.add_css("publish_time", ".publish_time::text")
        item_loader.add_css("job_advantage", ".job-advantage p::text")
        item_loader.add_css("job_desc", ".job_bt div")
        item_loader.add_css("job_addr", ".work_addr")
        item_loader.add_css("company_name", "#job_company dt a img::attr(alt)")
        item_loader.add_css("company_url", "#job_company dt a::attr(href)")
        # item_loader.add_value("crawl_time", datetime.now())

        job_item = item_loader.load_item()
        # print(job_item)
        yield job_item
        pass

其中items代码如下:

import re
import scrapy
from scrapy.loader.processors import  TakeFirst,MapCompose,Join
from scrapy.loader import ItemLoade

class FirstItemLoader(ItemLoader):
    #自定义itemloader,继承scrapy的ItemLoader类
    default_output_processor = TakeFirst()

def remove_splash(value):
    #去掉工作城市的斜线
    return value.replace("/","")

class LagouJobItem(scrapy.Item):
    #拉勾网职位信息
    title = scrapy.Field()
    url = scrapy.Field()
    url_object_id = scrapy.Field()
    salary = scrapy.Field()
    job_city = scrapy.Field(
        input_processor=MapCompose(remove_splash),
    )
    work_years = scrapy.Field(
        input_processor = MapCompose(remove_splash),
    )
    degree_need = scrapy.Field(
        input_processor = MapCompose(remove_splash),
    )
    job_type = scrapy.Field()
    publish_time = scrapy.Field()
    job_advantage = scrapy.Field()
    job_desc = scrapy.Field()
    job_addr = scrapy.Field(
    )
    company_name = scrapy.Field()
    company_url = scrapy.Field()
    tags = scrapy.Field(
        input_processor = Join(",")
    )
    crawl_time = scrapy.Field()


在这里代码基本编写完成,这里忽略了数据库的持久化,可以在知乎爬取那里学习,可以在cmd试着运行:cd进入项目目录后,输入:scrapy crawl lagou运行项目:

运行结果:  

如果没有爬取成功提示要登录,可以看看下面的应对措施

五,应对反爬措施

由于拉勾的反爬措施比较严格,所以可以会需要登录才可以访问,这里采取了反反爬虫的方法有:

5.1,设置随机的user-agent

首先导入 fake_useragent     :pip install  fake_usergent

然后在中间件 middlewares.py 添加以下代码:

from fake_useragent import UserAgent
#随机更换user-agent
class RandomUserAgentMiddlware(object):
    def __init__(self,crawler):
        super(RandomUserAgentMiddlware, self).__init__()
        self.ua = UserAgent()

    @classmethod
    def from_crawler(cls,crawler):
        return cls(crawler)

    def process_request(self,request,spider):
        request.headers.setdefault('User-Agent',self.ua.random)
这样每次下载页面时就会传入不同的 user-agent
别忘了在setting添加middlewares设置,否则该设置不生效
DOWNLOADER_MIDDLEWARES = {
   'ArticleSpider.middlewares.RandomUserAgentMiddlware': 543,
   'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': None,
  
}




5.2,设置下载延迟
在setting中添加设置:
DOWNLOAD_DELAY = 10

这样基本就能爬取拉勾网大部分招聘信息了,如果还是不行,还能采取selenium驱动谷歌浏览器来访问,还可以设置自动登录,或者自动修改ip来解决,这里就不一一列举


六,问题
CrawlSpider如何工作的?

因为CrawlSpider继承了Spider,所以具有Spider的所有函数。 首先由start_requests对start_urls中的每一个url发起请求(make_requests_from_url),这个请求会被parse接收。在Spider里面的parse需要我们定义,但CrawlSpider定义parse去解析响应(self._parse_response(response, self.parse_start_url, cb_kwargs={}, follow=True)) _parse_response根据有无callback,follow和self.follow_links执行不同的操作

    def _parse_response(self, response, callback, cb_kwargs, follow=True):
    ##如果传入了callback,使用这个callback解析页面并获取解析得到的reques或item
        if callback:
            cb_res = callback(response, **cb_kwargs) or ()
            cb_res = self.process_results(response, cb_res)
            for requests_or_item in iterate_spider_output(cb_res):
                yield requests_or_item
    ## 其次判断有无follow,用_requests_to_follow解析响应是否有符合要求的link。
        if follow and self._follow_links:
            for request_or_item in self._requests_to_follow(response):
                yield request_or_item

其中_requests_to_follow又会获取link_extractor(这个是我们传入的LinkExtractor)解析页面得到的link(link_extractor.extract_links(response)),对url进行加工(process_links,需要自定义),对符合的link发起Request。使用.process_request(需要自定义)处理响应。






python scrapy爬虫 CrawlSpider 拉钩招聘网302重定向问题解决方案 , 修改setting信息,添加cookie请求 # -*- coding: utf-8 -*- from datetime import datetime from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from ArticleSpider.items import LagouJobItem, Lagou... 阅读详情

相关推荐

Scrapy框架之Crawlspider的使用

Scrapy存在多种爬虫类,最常用的有两种:第一种是基于basic模版创建的普通爬虫类Scrapy.spider。另一种是基于crawl的规则性爬虫类scrapy.spider.crawlspider。 一,crawlspider:经常用于数据在同一个页面上进行采集的情况下。 二,spider:适用于多个页面的采集。 crawlspider原理图如下: 创建crawlspider爬虫项目:crawlspider爬虫和普通爬虫创建项目大致相同,只是在创建爬虫时不同,普通爬虫使用Scrapy

m0_63497523的博客 1392

Scrapy CrawlSpider介绍和使用

Scrapy CrawlSpider介绍和使用

分享我的点点滴滴,在成长路上与你同行! 1899

python网络爬虫 CrawlSpider使用详解

这篇文章主要介绍了python网络爬虫 CrawlSpider使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 CrawlSpider 作用:用于进行全站数据爬取 CrawlSpider就是Spider的一个子类 如何新建一个基于CrawlSpider的爬虫文件 scrapy genspider -t crawl xxx www.xxx.c...

python爬虫教程 5071

CrawlSpiders全站爬取-拉勾网职位信息

当COOKIES_ENABLED是注释的时候scrapy默认没有开启cookie 当COOKIES_ENABLED没有注释设置为False的时候scrapy默认使用了settings里面的cookie 当COOKIES_ENABLED设置为True的时候scrapy就会把settings的cookie关掉,使用自定义cookie 所以当我使用settings的cookie的时候,又把COOKIES...

qq_42206477的博客 498

python使用CrawlSpider整站抓取文章内容

本工程实现了python使用CrawlSpider整站抓取文章内容,具体的内容介绍见博客:https://blog.youkuaiyun.com/xiaocy66/article/details/83048237

Python爬虫实例——scrapy框架爬取拉勾网招聘信息

主要介绍了Python爬虫实例——scrapy框架爬取拉勾网招聘信息的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下

PythonScrapy框架实战(一)爬取腾讯招聘网信息

今天我们来通过Scrapy爬取腾讯招聘网的信息 网站地址:https://hr.tencent.com/position.php 拿到一个url我们要先看,我们所需要的信息是否在这个url中。 F12查看Elements.找到我们所需要的内容。 点击Network——response中查找看看有没有我们所需要的内容 我们需要的内容是有的,所以url就是这个了。 下面我们开始爬。 创建scrap...

自律 720

python爬虫之爬取拉勾网职位信息

import json import time import requests import csv # 1. 创建文件对象 f = open('lgposition.csv', 'w', encoding='utf-8', newline='') # 2. 基于文件对象构建 csv写入对象 csv_writer = csv.writer(f) # 3. 构建列表头 csv_writer.writerow( ["公司", "职位名称", "公司简称", "公司规模", "公司行业", "融资", "福利", "职位类型", "第二职位", "第三职位", "技能

零基础:21天搞定Python分布爬虫完整视频教程百度网盘免费获取

零基础:21天搞定Python分布爬虫完整视频教程百度网盘免费获取 课程目录 第1章:爬虫前奏 小节1【爬虫前奏】什么是网络爬虫23:05 小节2【爬虫前奏】HTTP协议介绍16:29 小节3【爬虫前奏】抓包工具的使用24:49 第2章:网络请求 小节4【urllib库】urlopen函数用法09:42 小节5【urllib库】urlretrieve函数用法04:35 小节6【urllib库】参...

dushiyou2017的博客 1万+

NXP KW47蓝牙MCU低功耗实测:从8μA睡眠到5年续航的优化实战

在物联网和嵌入式系统开发中,低功耗设计是决定电池供电设备续航能力的关键技术。其核心原理在于通过事件驱动、状态机管理和精细的电源域控制,使设备在空闲时进入深度睡眠,仅在需要时快速唤醒工作,从而将平均电流从毫安级降至微安级。这项技术的工程价值在于能够实现纽扣电池供电设备长达数年的使用寿命,广泛应用于智能家居传感器、可穿戴设备、资产追踪和工业监测等领域。以NXP KW47系列无线MCU为例,其集成的Arm Cortex-M33双核与专用射频单元,配合多级睡眠模式和高效DC-DC转换器,为超低功耗蓝牙应用提供了硬件

weixin_30162121的博客 256

智驾系统分层架构:从传感器到执行器的全链路解析

本文深入解析了智能驾驶系统的分层架构,从传感器数据采集融合、应用层决策到车辆管理层执行,完整呈现了从感知到控制的全链路工作流程。文章重点阐述了架构设计的核心优势在于接口标准化与模块解耦,以ACC和LKA协同场景为例,说明了各层级如何通过清晰分工与高效协作,实现复杂系统的可靠、灵活与易于升级。

weixin_29219189的博客 399

python重定向如何爬取_crawlspider爬取拉勾时候被重定向

按照慕课实战教程操作,用crawlspider爬取拉勾网的时候被302.一般是每次都能200成功6个url,接下来就会被302。请教各位老师,这种反爬技术是什么呢,思路是什么呢,下面是我的代码classLagouSpider(CrawlSpider):name='lagou'allowed_domains=['www.lagou.com']start_urls=['https://w...

weixin_39623805的博客 245

超酷炫,Python实现交通数据可视化!

此时输出的栅格化参数params的内容存储了栅格坐标系的原点坐标(slon、slat)、单个栅格的经纬度长宽 (deltalon、deltalat)、栅格的旋转角度(theta)、栅格的形状(method参数,其值可以是方形rect、三角形tri和六边形hexa)以及栅格的大小(gridsize参数,单位为米)。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。今天分享一次Python交通数据分析与可视化的实战!

m0_59236127的博客 1696

2.简单爬虫————爬取拉勾网招聘信息(一)

该文章仅供学习,如有错误,欢迎指出 1.开始创建一个项目 mkdir lagou 2.进入到文件夹下创建python3的虚拟环境 pipenv install scrapy 3.进入pipenv 下使用scrapy命令创建爬虫项目 pipenv shell scrapy startproject lagou cd lagou scrapy genspider -o cra...

LLH_e的博客 852

IntelliJ IDEA 中git使用说明书

IntelliJ IDEA 中git使用说明书

junyang2012的博客 5389

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

Scrapy框架--CrawlSpider (详解+例子)

关于CrawlSpider的全面解析附简单例子

m0_67093160的博客 3171

1-Wire 单总线硬件结构及软件时序分析(实测波形+C代码分析)

1根线就可以通信,是不是很神奇?因为其节省I/O口的优点而被广泛使用!

记得诚 1万+

Python网络爬虫(十九)——CrawlSpider

在之前 Scrapy 的基本使用当中,spider 如果要重新发送请求的话,就需要自己解析页面,然后发送请求。而 CrawlSpider 则可以通过设置 url 条件自动发送请求。 CrawlSpider 是 Spider 的一个派生类,相对于 Spider 来说,功能进行了更新,使用也更加方便。 CrawlSpider 创建 CrawlSpider 和之前创建 spider 一样,虽然可以在创建 Scrapy 项目之后手动构造 spider,但是 Scrapy 也给出了在终端下创建 CrawlSp

止步听风的博客 1190

Nvidia Orin Driveos Camera 介绍及调试详解

自动驾驶-nvidia orin driveos Camera 驱动详解及调试

u011803281的博客 2991

AMBA-CHI协议详解(二)

读事务,写事务,原子事务,Stash事务,Dataless事务,DVM事务,Retry事务。

Crazzy_M的博客 6652

Scrapy之CrawlSpider(Python)

CrawlSpider 是Scrapy框架中的一个爬虫类,用于快速开发和部署基于规则的爬虫。CrawlSpider 继承自Scrapy的Spider类,但与普通的Spider类不同,CrawlSpider可以根据一些规则自动发现和跟踪链接,从而实现深度爬取。CrawlSpider的特点包括:自动跟踪链接:CrawlSpider可以根据指定的规则自动发现和跟踪链接,无需手动定义start_requests()方法。

Tudective的博客 2017

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python网络爬虫(第十二章:自动爬取网页的爬虫CrawlSpider))

1.CrawlSpider CrawlSpider:类,是Spider的一个子类 全站数据的爬取方式: 1.基于Spider:手动请求 2.基于CrawlSpider 案例1:爬取小程序社区信息 步骤1. scrapy startproject shequPro 步骤2. sc shequPro 步骤3.scrapy genspider -t crawl tengxun www.xxx.com 步骤4. spider.py import scrapy from scrapy.linkextractors

qq_38633279的博客 735

深度学习工具包 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")

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【Python从入门到进阶】52、CrawlSpider链接提取器的使用

CrawlSpider是Scrapy框架中的一个特殊爬虫类型,它主要用于处理需要遵循特定规则和链接提取的网站。通俗地说,CrawlSpider就像一个智能的探险家,它按照我们设定的规则(Rule)在网页上“探险”,自动跟踪链接、提取信息,并将这些信息收集起来供我们使用。

程序猿之洞 2050

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python爬虫十四:scrapy crawlspider的介绍及使用

1、scrapy crawlspider的介绍 他有着自动提取规则,内部封装的只要我们爬取的数据有规律并且在网页源码中,就可以实现他的自动抓取,我们不用管具体交给它做,下面会有案例展示 之前的代码中,我们有很大一部分时间在寻找下一页的URL地址或者内容的URL地址上面,这个过程能更简单一些吗? 思路: 1.从response中提取所有的li标签对应的URL地址 2.自动的构造自己resquests请求,发送给引擎 目标:通过爬虫了解crawlspider的使用 生成crawlspider的命令:scrapy

weixin_49088841的博客 960
上一篇: python3模拟登录知乎
下一篇: python的学习路线
oldbig_lin
博客等级 码龄10年 78粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值