python爬虫学习笔记(2)

什么是网络爬虫 又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以根据指定的规则,从互联网上下载网页、图片、视频等内容,并抽取其中的有用信息进行处理。网络爬虫的工作流程包括获取网页源代码、解析网页内容、存储数据等步骤。根据其目的和工作方式的不同,网络爬虫可以分为多种类型。常见的网络爬虫包括通用爬虫、聚焦爬虫、增量式爬虫等。 阅读详情

Get与Post请求

get和post就是两种获取信息的方式,它不会显示的表现出来是get还是post请求,这个不同是体现在请求的方法之中的。

get

之前所学习的就全都时get相关的请求,从一个网站中获取某些信息,get想要请求的信息都将显现的展示在url上,就比说百度搜索时,你所搜索的内容就会变成wd=。。。而放在url上面。

post

post请求是要向网址递交你的一些信息,然后获取相应信息。就比如说是在某个网页上进行登录,你就需要post时附上账号及密码信息,并通过加密传输。
而post就目前所学就是向请求体中加入data,请求体原本我们是有url和headers,然后就在这个之上在传一个参数进去——data,就比如说在有道翻译上输入要翻译的信息,那我们就可以通过在data中放入该信息后,通过post获得翻译的结果,

import urllib.request
import urllib.parse
import json

# 接收用户输入,对 data 进行转码(字节流)
key = input("请输入要翻译的内容:")
data = {
        "i":key,#在data中放入所要翻译的内容
        "from":"AUTO",
        "to":"AUTO",
        "smartresult":"dict",
        "client":"fanyideskweb",
        "salt":"1542876206627",
        "sign":"6903dad5191ed03cdc87868f0ef748dc",
        "doctype":"json",
        "version":"2.1",
        "keyfrom":"fanyi.web",
        "action":"FY_BY_REALTIME",
        "typoResult":"false"
    }

#先把Form表单数据整理成字典
#然后通过urlencode将其转换成字符串,再encode通过utf-8编码将其转换为字节流
data = urllib.parse.urlencode(data).encode("utf-8")
# 发请求,获响应
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule"
headers = {"User-Agent":"Mozilla/5.0"}

req = urllib.request.Request(url,data=data,headers=headers)
res = urllib.request.urlopen(req)
html = res.read().decode("utf-8")
# 有道翻译返回的信息时json格式的,所以html为json格式的字符串
r_dict = json.loads(html)
#loads将json字符串转为python字典格式
#print(type(r_dict))
print(r_dict["translateResult"][0][0]["tgt"])

正则表达式

我们知道再网页的html源码中有大量的代码,如果将其全部提取出来,我们看代码来寻找信息的话非常麻烦的,所以正则表达式就可以解决这个问题,我们可以通过正则表达式与相应格式的字符串进行匹配,从而获取要找的信息。
下面有几个简单的元字符

元字符描述
\转义作用
^匹配行首
$匹配行尾
.匹配\n和\r外的任意字符
\w匹配包括下划线的任意字母
\s匹配任意不可见字符
……

更多相关内容可以参考百度百科.
正则表达式匹配有分为贪婪匹配和非贪婪匹配,而其关键不同就在于 .* 与 .*? 的使用。其中.的意思时任意字符除\n、\r外,*的意思时任意个,那么.*的意思时匹配任意个任意字符除\n、\r外。
同样,在正则表达式中由于有一些字符本身具有特定意义,所以如果要用该字符的原意取进行匹配时,比如要匹配存在.的字符串,就需要用到转义字符,即可使用.去匹配. 。

贪婪匹配

贪婪匹配,顾名思义就是进可能匹配多的字符,对于一个字符串123abc456def456,进行贪婪匹配的话,使用正则表达式123.*456匹配,最后匹配结果就是123abc456def456。

非贪婪匹配

那么非贪婪匹配就是尽可能匹配少的字符,上面例子,字符串123abc456def456,使用正则表达式123.*?456匹配时,匹配结果就是123abc456。可见两者差异主要就是在于 .* 和 .*? 。

最后,有一个在线正则表达式,可以用作练习。

re的简单使用(获取想要的信息)

再python之中我们就可以通过re库使用正则表达式取匹配字符串了。

match

match就是必须从字符串的头开始匹配,只要匹配失败了,就直接返回None。就比如说字符串123abc456def456,使用表达式123.*?456去匹配,

import re

s = "123abc456def456"
result = re.match('123.*?456', s)
#在s中从头寻找与之匹配的字符串
print(result)
#返回结果
print(result.group())
#返回匹配到的字符串
print(result.span())
#返回位置区间

运行结果如下

<_sre.SRE_Match object; span=(0, 8), match=‘123abc456’>
123abc456
(0, 8)

match所返回的时一长串东西,其中第一个时SRE_Match对象,这说明匹成功了,接下来时span,表示的时匹配结果的首尾坐标位置,match表示的是匹配到的内容。
其中我们可以通过结果调用group()和span()函数分别获取match以及span。

search

但是呢,match只能从头匹配,如果想匹配中间的东西,就要用到search函数了,search函数就提供了从字符串任意位置匹配,返回最先匹配到的字符串。就比如说字符串123abc456def456,使用表达式abc(.*?)5(.*?)def去匹配,

import re

s = "123abc456def456"
result = re.search('abc(.\*?)5(.*?)def', s)
print(result)
print(result.group())
print(result.span())
print(result.group(1))
#返回第一个()中匹配到的内容
print(result.group(2))
#返回第二个()中匹配到的内容

运行结果如下

<_sre.SRE_Match object; span=(3, 11), match=‘abc456def’>
abc456def
(0, 8)
4
6

这里在正则表达式中使用了(),起作用就是可以将括号中的特定信息提取,就比如上面例子中有俩括号,进行匹配后一个匹配到了4,一个匹配到了6,在之后就可以通过group(i)来获取第i个括号中的内容信息。

findall

之前两个函数都是找到一个匹配的字符串就返回,但如果要想在内容中把所有可以匹配的字符串全找出来,就需要用findall了。它可以将所有与之匹配的内容形成一个列表返回,列表中每一行都是特定字符,即()中需要匹配到的字符的集合。

import re

s = "“”123abc456def456
	123abc657def456
	123abc758def456"“”
results = re.findall('abc(.\*?)5(.*?)def', s,re.S)
#返回s中所有与之匹配的字符串,并且匹配包括换行符所有字符
print(results)
for result in results:  
    print(result)  
    print(result[0], result[1])
#将列表中的所有结果进行输出

运行结果如下

[(‘4’,‘6’),(‘6’,‘7’),(‘7’,‘8’)]
(‘4’,‘6’)
4 6
(‘6’,‘7’)
6 7
(‘7’,‘8’)
7 8

在以上的例子中,在findall函数中,加了一个re.S参数,这个是一个匹配的修饰符,由于.*?是不能匹配换行符的,而re.S的作用就是使得匹配可以存在换行符,同样还有很多其他的修饰符。

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,对^和$有影响
re.S是匹配包括换行符在内的所有字符
re.U根据Unicode字符集解析字符,对\w、\W、\b和\B有影响
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解

需要说明的使修饰符中,re后面跟的字母全为大写字母。

compile

该函数可以将正则字符串编译成正则表达式对象,这样就可以方便在之后对于该表达式的使用了。那么上一个例子的代码就等价于

import re

s = """123abc456def456
	123abc657def456
	123abc758def456"""
exp = re.compile('abc(.\*?)5(.*?)def',re.S)
#设定正则表达式对象,其中可以包括re.S的设定
results = re.findall(exp, s)
print(results)
for result in results:  
    print(result)  
    print(result[0], result[1])

sub

该函数可以将所提取的字符串进行修改。
使用方法十分简单

import re

s = '123abc456def456'
s = re.sub('\d+', '', s)
#其中\d+表示的是1个及以上的数字,而后面的‘’之间没有任何东西。
#该sub函数实际就是将s中的所有数字全部转换成‘’,就是删除
print(content)

运行结果如下:

abcdef

出现问题

post请求中的data参数设定

对于post中data具体是要怎么写的存在疑惑。

未解决
此次学习主要参考于Spider(二) ——爬虫基础

《用Python写网络爬虫第2版》PDF中英文+代码分析 互联网包含了迄今为止最有用的数据集,并且大部分可以免费公开访问。但是,这些数据难以复用。它们被嵌入在网站的结构和样式当中,需要抽取出来才能使用。从网页中抽取数据的过程又称为网络爬虫,随着越来越多的信息被发布到网络上,网络爬虫也变得越 来越有用。 在理想状态下,网络爬虫并不是必需品,每个网站都应该提供API,以结构化的格式共享它们的数据。然而在现实情况中,虽然一... 阅读详情

相关推荐

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,

python588的博客 2355

Python学习笔记之网络爬虫2

Python学习笔记之网络爬虫2 查阅Python官方文档里面已有说明: Note The urllib2 module has been split across several modules in Python 3.0 named urllib.request and urllib.error. The 2to3 tool will automatically adapt imports when converting your sources to 3.0 from urllib.request i

weixin_41674487的博客 229

如何在网络爬虫中解决CAPTCHA?使用Python进行网络爬虫

对于从事大规模数据爬取或自动化任务的用户来说,CAPTCHA可能是一个严峻的障碍。幸运的是,CapSolver已成为解决网络数据爬取等场景中遇到的CAPTCHA挑战的首选解决方案提供商。CapSolver可以轻松快速地解决各种CAPTCHA障碍,并为遇到CAPTCHA问题的用户提供即时解决方案。

weixin_68994939的博客 1885

python网络爬虫学习笔记(2)Python基础

网络爬虫学习笔记(2) 元组,条件语句,循环语句,函数,类,模块

user_987654321的博客 2208

python网络爬虫学习笔记(1)爬虫概述 安装 Python基础

网络爬虫学习笔记(1) 1 资料 《Python网络爬虫从入门到实践》唐松,陈志铨。主要面向windows平台下的python3。 2 笔记 2-1 爬虫概述 (约2016年)网络爬虫个人使用和科研范畴基本不存在问题,但商业盈利范畴就要看对方了。 通过网站的Robots协议(爬虫协议)可以知道可以和不可以抓取的内容,例如淘宝的[link]https://www.taobao.com/robots...

user_987654321的博客 1800

Ubuntu安装opencv4.5(自己安装过程详细)

1.下载opencv 在opencv官网下载source版,下载链接 http://opencv.org/releases.html。别下载错版本 下载过程就不多说了。 2.安装过程 2.1解压 unzip opencv-4.5.0.zip cd opencv-4.5.0 2.2安装依赖的库 sudo apt-get install cmake sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-

weixin_45629790的博客 1万+

【Python学习笔记2】Python网络爬虫的异常处理

本文信息主要来源于韦玮老师的《精通python网络爬虫》,仅作为个人学习笔记。 通过python库函数urllib.request去爬取网页时,遇到的异常主要时URL类和网页类的错误,python已提供URLError类和HTTPError类来处理。 【URLError】可能原因: 1、链接不上服务器;2、远程URL不存在;3、无网络 【HTTPError】可能原因,可通过状态码分类: ...

陈小超的技术博客 636

无人机中继传输数据链技术,(无人机+自组网)远距离传输技术实现详解

无人机中继传输数据链技术是指利用无人机作为空中移动中继节点,在需要通信的区域上空悬停或移动,以建立和维护通信链路,从而扩展通信范围、提高通信质量和灵活性。1. 通信链路:是无人机中继通信的重要组成部分,包括源节点到中继节点的链路和中继节点到目标节点的链路。同时,它还支持空中到地面的通信,距离大于100km。总的来说,无人机中继传输数据链技术和(无人机+自组网)远距离传输技术都是现代无人机通信领域的重要技术,它们的应用极大地扩展了无人机的通信范围和灵活性,为各种应用场景提供了强有力的支持。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2079

《崔庆才Python3网络爬虫开发实战教程》学习笔记(2):常用库函数的安装与配置

本篇博文是自己在学习崔庆才的《Python3网络爬虫开发实战教程》的学习笔记系列,如果你也要这套视频教程的话,加我WX吧:reborn0502,然后我私信给你百度云链接,公然放出来不太好~ 或者关注我公众号【程序员向东】,此公众号专注分享Python、爬虫学习资料和干货,关注后回复【PYTHON】,无套路免费送你一个学习大礼包,包括爬虫视频和电子书~ -------------------...

向东的笔记本 2408

CVAT本地部署保姆级教程:用Docker Compose在Ubuntu上5分钟搞定你的私有数据标注平台

本文提供CVAT本地部署的保姆级教程,详细讲解如何在Ubuntu系统上使用Docker Compose快速搭建私有数据标注平台。从环境准备、Docker配置到CVAT部署全流程,涵盖硬件要求、性能优化及安全加固等关键步骤,帮助开发团队5分钟内完成高效、安全的标注环境搭建。

weixin_42619742的博客 383

OpenCompass实战:从零部署大模型评测平台,量化模型能力选型

在大模型技术选型与评估中,客观、可量化的评测体系是工程实践的关键。其核心原理在于通过标准化的数据集、统一的评测方法与自动化流程,将主观的模型体验转化为可比较的指标数据。这种评测框架的技术价值在于解决了模型能力评估的模糊性问题,为开发者提供了模型选型、效果对比与迭代优化的科学依据。典型的应用场景包括对比不同开源模型在代码生成、逻辑推理等特定任务上的性能,或是评估微调后模型在业务数据集上的提升效果。OpenCompass作为开源的大模型全能力评测平台,正是这一理念的工程化实现。它通过模块化的四层流水线架构和配置

weixin_28725037的博客 626

python爬虫学习笔记2-爬虫基本概念

python爬虫学习笔记2-爬虫基本概念爬虫介绍什么是爬虫为什么需要爬虫企业获取数据的方式python做爬虫的优势爬虫的分类爬虫如何抓取网页中的数据网页三大特征爬虫的设计思路通用网络爬虫搜索引擎如何获取一个新网站的URLRobots协议通用搜索引擎(Search Engine)工作流程第一步:抓取网页第二步:数据存储第三步:预处理第四步:提供检索服务,网站排名聚焦网络爬虫工作流程 爬虫介绍 什么是爬虫 简单一句话就是代替人去模拟浏览器进行网页操作。 为什么需要爬虫 为其他程序提供数据源,如搜索引擎(百度、G

藏狐的博客 229

ROS激光雷达动态避障算法优化(C++实战)

本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。

weixin_29192141的博客 943

python爬虫学习笔记-2

python爬虫学习笔记-2

Exploring2018的博客 593

100天精通Python(可视化篇)——第80天:matplotlib绘制不同种类炫酷柱状图代码实战(簇状、堆积、横向、百分比、3D柱状图)

0. 专栏导读 1. 普通柱状图 2. 簇状柱形图 3. 堆积柱形图 4. 横向柱状图 5. 横向双向柱状图 6. 百分比堆积柱形图 7. 3D柱形图 8. 3D堆积柱形图 9. 3D百分比堆积柱形图

努力让自己发光,对的人才能迎着光而来 2万+

华为OD机试 - 去除多余空格(Python/JS/C/C++ 2024 E卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。条件约束:输入为两行字符串:第一行:待去除多余空格的文本,用例保证如果有单引号,则单引号成对出现,且单引号可能有多对。 第二

学Java,找哪吒 1216

网络爬虫是什么?怎么学python爬虫

网络爬虫又称网络蜘蛛、网络机器人,它是一种按照一定的规则自动浏览、检索网页信息的程序或者脚本。网络爬虫能够自动请求网页,并将所需要的数据抓取下来。通过对抓取的数据进行处理,从而提取出有价值的信息。

Itmastergo的博客 3万+

rk3568 Android12 默认授予预装app权限

默认授予预装应用权限可以避免用户在每次使用应用时都要重复同意权限请求。尽管在Android 12中,用户对权限的管理有了更高的控制权,但这也可能导致用户在频繁使用预装应用时感到繁琐和不必要的干扰。通过默认授权,减少了这种麻烦。一些厂商可能会根据其定制的Android系统(如Samsung的One UI、Xiaomi的MIUI)要求某些预装应用默认获得权限,以便应用能够提供厂商特定的功能。这也有助于设备厂商提供统一和稳定的服务,不至于因为权限问题导致某些功能无法使用。

weixin_35723192的博客 661

终于有人把网络爬虫讲明白了

摘要:Python网络爬虫的详尽解释。导读:网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果...

苏克的博客 4342

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

浅谈 Python 网络爬虫的那些事

在大数据、人工智能应用越来越普遍的今天,Python 可以说是当下世界上热门、应用广泛的编程语言之一,在人工智能、爬虫、数据分析、游戏、自动化运维等各个方面,无处不见其身影。随着大数据时代的来临,数据的收集与统计占据了重要地位,而数据的收集工作在很大程度上需要通过网络爬虫来爬取,所以网络爬虫技术变得十分重要。

黛琳ghz的博客,期待你的关注。 6826

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Python网络爬虫

网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。通俗来讲,网络爬虫就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

zgl040803的博客 2635

深度学习工具包 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 网络爬虫教程

网络爬虫是一种自动化程序,它模拟人类用户访问网页,自动获取网页上的内容。这些数据可以是文本、图片、视频等。爬虫的核心任务是发送 HTTP 请求,获取网页响应并解析内容。

JH_joker的博客 2362

【愚公系列】《Python网络爬虫从入门到精通》001-初识网络爬虫

随着互联网的快速发展,数据的获取与处理变得愈发重要。在这个信息爆炸的时代,如何有效地收集和利用网络上的海量数据,成为了各行业面临的一大挑战。网络爬虫,作为一种自动化获取网页信息的技术,正逐渐成为数据分析、市场研究、竞争对手监控等领域不可或缺的工具。本文将带领读者初步了解网络爬虫的基本概念、工作原理以及常见应用场景。我们将探讨爬虫的构建过程,包括如何发送请求、解析网页、存储数据等关键步骤。同时,还会涉及一些爬虫开发中的注意事项,如如何遵循网站的robots.txt协议、避免被封禁等。

愚公智库 12万+

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2633

网络爬虫-Python网络爬虫和C#网络爬虫

C# 也可以用于网络爬虫开发,通过 HTTP 请求获取网页数据并进行解析。与 Python 类似,C# 也有相应的库和框架,虽然 C# 网络爬虫在简便性和灵活性上不如 Python,但在某些企业级应用中,C# 也表现出色。

weixin_42462436的博客 3402

什么是网络爬虫?有什么用?怎么爬?终于有人讲明白了

「2019 Python开发者日」全日程揭晓,请扫码咨询 ↑↑↑作者|韦玮,资深网络爬虫技术专家、大数据专家和软件开发工程师,从事大型软件开发与技术服务多年,精通Py...

Python大本营的博客 1万+
上一篇: python爬虫学习笔记(1)
下一篇: python爬虫学习笔记(3)
dofy_
博客等级 码龄7年 1粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值