- 博客(1725)
- 资源 (2)
- 收藏
- 关注
原创 Python爬虫编程思想(27):Twisted框架基础
目录1. Reactor(反应堆)模式2. HelloWorld,Twisted框架1. Reactor(反应堆)模式 在学习Twisted框架之前,先来了解一下反应堆模式。异步编程模型之所以能监视所有的任务的完成和阻塞情况,是因为通过循环用非阻塞模式执行完了所有的任务。例如,对于使用Socket访问多个服务器的任务。如果使用同步编程模型,会一个任务一个任务地顺序执行,而使用异步编程模型,执行的所有Socket方法都处于非阻塞的(使用setblocking(0)...
2021-09-16 08:22:49 441
原创 Python爬虫编程思想(26):Twisted的异步编程模型
目录1. 同步编程模型2. 线程编程模型3. 异步编程模型学习Twisted框架之前,先要了解一下异步编程模型。可能很多读者会认为,异步编程就是多线程编程,其实这两种编程模型有着本质的区别。目前常用的编程模型有如下3种:同步编程模型 线程编程模型 异步编程模型下面就来看看这3种编程模型有什么区别。1. 同步编程模型如果所有的任务都在一个线程中完成,那么这种编程模型称为同步编程模型。线程中的任务都是顺序执行的,也就是说,只有...
2021-09-16 08:13:18 320
原创 Python爬虫编程思想(25):使用requests实现身份验证和请求打包
目录1. 身份验证2. 将请求打包1. 身份验证使用urllib库进行身份验证时,需要使用一大堆类,如HTTPPasswordMgrWithDefaultRealm、HTTPBasicAuthHandler等,非常麻烦。使用requests进行身份验证就简单得多,只需要设置auth参数即可。auth参数的值是一个HTTPBasicAuth对象,封装了用户名和密码。下面的例子向服务端发送支持Basic验证的请求,如果验证成功,服务端会返回success。impor...
2021-09-15 11:00:10 555
原创 Python爬虫编程思想(24):在requests中使用代理和处理超时
目录1. 使用代理2. 超时1. 使用代理 使用代理的必要性在前文已经详细阐述了,requests使用代理发送请求非常容易,只需要指定proxies参数即可,该参数是一个字典类型的值,每一对key-value表示一个代理的协议,如http、https等。下面的例子设置了HTTP和HTTPS代理,并通过代理访问了天猫首页,最后输出响应内容。import requestsproxies = { 'http':'http://144.123.6...
2021-09-15 10:40:19 312
原创 Python爬虫编程思想(23):使用requests验证ssl证书
目录1. 生成私钥文件2. 生成csr文件3. 生成证书文件(crt文件) 在用requests请求HTTPS URL时,如果证书验证错误,默认会抛出如图1所示的异常。也就是说,requests在默认情况下会对证书进行验证。不过可以使用verify参数将验证功能关掉。verify参数的默认值是True,表示验证证书,如果将verify参数设为False,则会关掉requests的验证功能,但会显示一个警告,可以使用urllib3的disable_warning...
2021-09-15 08:56:46 1277
原创 Python爬虫编程思想(22):使用requests网络库上传文件、处理Cookie和Session
目录 1. 上传文件2. 处理Cookie3. 使用同一个会话(Session) 1. 上传文件用requests上传文件也是相当简单的,只需要指定post方法的files参数即可。files参数的值可以是BufferedReader对象,该对象可以用Python语言的内置函数open返回。下面的例子使用post方法分别向http://httpbin.org/post和upload_server.py上传一个本地图...
2021-09-09 22:17:21 332
原创 Python爬虫编程思想(21):使用requests网络库抓取二进制数据、提交POST请求和处理响应数据
目录1. 抓取二进制数据2. POST请求3. 响应数据1. 抓取二进制数据get方法指定的URL不仅可以是网页,还可以是任何二进制文件,如png图像、pdf文档等,不过对于二进制文件,尽管可以直接使用Response.text属性获取其内容,但显示的都是乱码。一般获取二进制数据,需要将数据保存到本地文件中。所以需要调用Response.content属性获得bytes形式的数据,然后再使用相应的API将其保存在文件中。本例使用get方法抓取一个png格式的图像文件,并将其保存为
2021-09-08 08:18:28 917
原创 Python爬虫编程思想(20):requests网络库的基本用法
目录1. requests的HelloWorld2. GET请求3 添加HTTP请求头1. requests的HelloWorld学习任何一种技术,都会用一个超级简单的案例起步,这个案例统称为HelloWorld。学习requests我们也沿用这个习惯。在开始使用requests之前,需要使用下面的命令安装requests。pip install requestsurllib库中的urlopen方法实际上是以GET方式请求网页,而requests中对应的方法是get,该.
2021-09-08 08:12:57 193
原创 Python爬虫编程思想(19):使用urllib3上传文件与处理超时
1. 上传文件客户端浏览器向服务端发送HTTP请求时有一类特殊的请求,就是上传文件,为什么特殊呢?因为发送其他值时,可能是以字节为单位的,而上传文件时,可能是以KB或MB为单位的,所以特殊就特殊在发送的文件尺寸通常比较大,所以上传的文件内容会用multipart/form-data格式进行编码,然后再上传。urllib3对文件上传支持的非常好。只需要像设置普通的HTTP请求头一样在request方法中使用fields关键字参数指定一个描述上传文件的HTTP请求头字段,然后再通过元组指定相...
2021-09-06 22:21:02 717
原创 鸿蒙(HarmonyOS)API的源代码哪去了?竟然全抛出异常,原来使用的是虚拟API【建议收藏】
1. HarmonyOS的方法为何都抛出异常不管是鸿蒙(HarmonyOS),或是Android、还是其他系统。理解其工作原理最好的方式就是阅读源代码。不过HarmonyOS的所有系统类,跟踪进去,全部是下面的东西。从反编译后的源代码可以看出,除了类的成员变量外,所有方法的内部实现全都抛出了RuntimeException异常,而且异常的信息是Stub。就这个问题,一直有粉丝问我,这到底是咋回事。Android的系统类跟踪进去就会看到源代码,HarmonyOS为什么看不到源代码呢?当然,也不
2021-09-06 09:09:57 22074 19
原创 Python爬虫编程思想(18):使用urllib3处理HTTP请求头和HTTP响应头
目录1. HTTP请求头2. HTTP响应头1. HTTP请求头大多数服务端应用都会检测某些HTTP请求头,例如,为了阻止网络爬虫或其他的目的,通常会检测HTTP请求头的User-Agent字段,该字段指定了用户代理,也就是用什么应用访问的服务端程序,如果是浏览器,如Chrome,会包含Mozilla/5.0或其他类似的内容,如果HTTP请求头不包含这个字段,或该字段的值不符合要求,那么服务端程序就会拒绝访问。还有一些服务端应用要求只有处于...
2021-09-02 11:44:38 1045
原创 Python爬虫编程思想(17):使用urllib3发送HTTP Get和HTTP POST请求
目录1 urllib3简介2. urllib3模块3. 发送HTTP GET请求4. 发送HTTP POST请求1 urllib3简介在Python程序中,使用频率最高的网络模块莫过于urllib,由于urllib是Python内置的网络模块,不需要单独安装,使用起来非常方便。但随着互联网的不断发展,urllib里的功能明显已经不够用了,所以有了后来的urllib2和urllib3。从前面文章的内容来看,urllib中的API大多与URL相关,...
2021-09-01 12:36:59 499
原创 Python爬虫编程思想(16):Robots协议(不了解这个就是面向监狱编程了)
目录1. Robots协议简介2. 分析Robots协议本问会介绍什么是Robots协议,以及如何用Robots协议规范爬虫的行为。1. Robots协议简介Robots协议也称作爬虫协议、机器人协议,它的全名是网络爬虫排除标准(Robots Exclusing Protocol),用来告诉爬虫和搜索引擎哪些页面可以抓取,哪些不可以抓取。该协议的内容通常放在一个名为robots.txt的文本文件中,该文件一般位于网站的根目录下。...
2021-09-01 11:13:34 371
原创 【建议收藏】万字长文,教你发布鸿蒙(HarmonyOS)组件到Maven中央仓库,全网最全教程!
目录1. 使用组件的3种方式(1)引用同工程中的HarmonyOS组件(以调试为目的)(2)引用本地的HarmonyOS组件(3)引用Maven中央仓库中的HarmonyOS组件2. 组件可以发布到哪里(1)没有自己的域名(2)有自己的域名3. 将组件发布到Maven中央仓库4. 如何查看发布的组件5. 使用发布的组件如果一个鸿蒙(HarmonyOS)App过于庞大,通常不会将所有的代码一股脑地放到一个工程中,最常用的方式是将...
2021-08-27 14:23:08 1662 1
原创 Python爬虫编程思想(15):解析链接的n种方法
目录1. 拆分与合并URL(urlparse与urlunparse)2 另外一种拆分与合并URL的方式(urlsplit与urlunsplit)3. 连接URL(urljoin)4 URL编码(urlencode)5 编码与解码(quote与unquote)6 参数转换(parse_qs与parse_qsl)urllib库里的parse模块可以用来解析URL,例如,将URL的各个部分抽取出来,或将不同部分合并为一个完整的URL,以及链接转换...
2021-08-26 08:39:19 392
原创 今天是七夕节、用100行CSS代码下一场流星雨、许一个愿、来一场美丽的邂逅
今天是七夕节、用100行代码下一场流星雨、许一个愿、来一场美丽的邂逅这个程序的核心使用CSS实现,基本原理就是利用CSS控制若干个div,本例是50个,当然,你可以弄更多的div,不过适当的流星是浪漫,如果流行太多了,恐龙就要灭绝了!现在说一下基本实现原理,首先用js动态产生若干个div,看下面的代码:var stars = '';for(var i = 0; i < 50;i++) { var starTailLengthStyle =...
2021-08-14 14:24:31 467
原创 HarmonyOS实战—基于鸿蒙服务卡片的分布式游戏
2021年7月31日,我在杭州HarmonyOS开发者日做了一个分享,主题是关于鸿蒙服务卡片的奇妙用法。通过让多张服务卡片之间相互交互来实现一个类似“连连看”的游戏(项目名称是“找我”),而且还支持分布式,可以让多部鸿蒙设备参与进来。在过去的一段时间,经常有小伙伴私信我,问能否讲解一下这款游戏的实现原理。现在我就借这篇文章的机会,来谈一谈这款基于鸿蒙服务卡片的分布式游戏的实现原理。1. 项目概述游戏演示请看下面的视频杭州鸿蒙开发者日“找我”游戏演示视频...
2021-08-08 16:30:55 2018 2
原创 Python爬虫编程思想(14):网络爬虫中的异常处理
在前面的文章中详细讲解了发送请求的过程,但这是在正常情况下的使用。如果非正常使用,例如,提供的URL根本就是错的,那么在发送请求时就会抛出异常。如果不使用try...except语句,程序就会崩溃(俗称异常退出)。在使用try...except语句捕捉异常时,except子句通常会加上错误类型,以便我们清楚地了解发生了什么错误。这些异常类都在urllib的error模块中定义,主要有两个异常类:URLError和HTTPError。1. URLErrorURLErro...
2021-07-31 08:53:41 352
原创 Python爬虫编程思想(13):读取和设置Cookie
一个功能强大的爬虫需要全方位,多维度地模拟浏览器向服务端发送请求,除了我们以前讲到的模拟User-Agent请求字段,通过代理模拟多个IP发送请求,还有一个重要的模拟维度,那就是模拟Cookie。Cookie本质上是服务端向客户端返回响应数据后在客户端留下的印记,而当客户端再次访问服务端时会带上这个印记。例如,用户第一次成功登录后,会在浏览器的Cookie中保存一个ID,当浏览器再次访问该服务端时会带上这个ID,当服务端看到这个ID时,就会认为这个用户已经是登录用户了,就会返回登录后的数据,...
2021-07-30 18:00:03 621
原创 Python爬虫编程思想(12):搭建代理与使用代理
最常见的反爬技术之一就是通过客户端的IP鉴别是否为爬虫。如果同一个IP在短时间内大量访问服务器的不同页面,那么极有可能是爬虫,如果服务端认为客户端是爬虫,很有可能将客户端所使用的IP临时或永久禁用,这样爬虫就再也无法访问服务器的任何资源了,当然,如果使用的是ADSL或光纤宽带,重新拨一下号或重启一下,一般会更换IP。但爬虫的任务是从服务器抓取成千上万的资源,光换几个IP是没用的,这就要求爬虫在抓取服务器资源时,需要不断更换IP,而且是大量的,数以万计的IP。更换IP的方式有很多,最常用,最简...
2021-07-30 17:34:42 321
原创 Python爬虫编程思想(11):用urllib请求基础验证页面
有一些页面并不是我们想访问就能访问的,这些页面都会将各种验证,例如,在第一次访问网页之前,会先弹出如图1所示的登录对话框,只有正确输入用户名和密码才能访问页面,否则会直接跳到错误页面。这种验证被称为基础验证,是HTTP验证的一种。输入的用户名和密码会通过Authorization请求头字段发送给服务端,在访问给页面时,如果服务端检测到HTTP请求头中没有Authorization字段时,会设置名为WWW-Authenticate的HTTP响应头字段,同时返回401响应...
2021-07-20 22:14:13 1112 5
原创 Python爬虫编程思想(10):通过urllib设置HTTP请求头
1. 设置英文HTTP请求头如果用爬虫向服务端发送HTTP请求,通常需要模拟浏览器的HTTP请求,也就是让服务端误认为客户端是浏览器,而不是爬虫,这样就会让服务器的某些反爬虫技术失效。但模拟浏览器发送HTTP请求需要设置名为User-Agent的HTTP请求头,除了这个请求头外,还可以会设置其他的请求头,而我们以前使用urlopen函数发送HTTP请求,请求头都使用的默认值。urlopen函数本身并没有设置HTTP请求头的命名参数,要想设置HTTP请求...
2021-07-18 22:26:35 594
原创 Python爬虫编程思想(9):用urllib处理请求超时
当向服务端发送HTTP请求时,通常很快就会得到响应,但由于某些原因,服务端可能迟迟没有响应(很大程度上是服务端吞吐量不够,你的请求正在排队),这样HTTP链接就会一直等待,知道超过预设的等待时间,这个等待时间就是请求超时。通常请求超时都比较大,这样以来,如果服务端半天没有响应,那么客户端就会一直在那等待。这对于爬虫来说是非常不妥的。因为爬虫通常会启动一个或多个线程抓取Web资源。如果这时有一个线程由于服务端没有响应而一直在那里等待,那么就相当于浪费了一个人力。所以需要将这个请求超时设置的比较...
2021-07-17 08:22:41 1215
原创 Python爬虫编程思想(8):使用urllib库发送HTTP请求和接收响应
目录1. urllib简介2. 用urlopen函数发送HTTP GET请求3. 用urlopen函数发送HTTP POST请求 编写爬虫的第一步就是选择一个好用的网络库,通过网络库的API可以发送请求,并接收服务端的响应。Python语言中的网络库有很多,有内置的,有第三方的。首先我们会讲一个Python内置的网络库:urllib。关于urllib,我们会讲如下内容。urllib的主要功能 发送HTTP请求和接收响应 请求超时 设置HTTP请求头 请求验证页面...
2021-07-12 22:24:42 413
原创 Python爬虫编程思想(7):实战案例:抓取博客文章列表
在上文给出的爬虫案例属于全网爬虫,从理论上说,如果给定的入口点也没包含足够多URL,并且大多数URL都可以导航到其他网站的页面,这个爬虫是可以将整个互联网的页面都抓取下来的。除了这种爬虫外,还有另外一种爬虫,这就是定向爬虫,这种爬虫并不是用来抓取整个互联网的页面的,而是用与抓取特定网站的资源。例如,抓取某个网站的博客列表数据。定向爬虫的基本实现原理与全网爬虫类似,都需要分析HTML代码,只是定向爬虫可能并不会对每一个获取的URL对应的页面进行分析,即使分析,可能也不会继续...
2021-07-10 19:01:24 482 2
原创 Python爬虫编程思想(6):实战案例:抓取所有的网络资源
到现在为止,我们已经对网络爬虫涉及到的基本知识有了一个初步的了解。本文会编写一个简单的爬虫应用,以便让读者对爬虫有一个基本的认识。本节要编写的爬虫属于全网爬虫类别,但我们肯定不会抓取整个互联网的资源。所以本节会使用7个HTML文件来模拟互联网资源,并将这7个HTML文件放在本地的nginx服务器的虚拟目录,以便抓取这7个HTML文件。全网爬虫要至少有一个入口点(一般是门户网站的首页),然后会用爬虫抓取这个入口点指向的页面,接下来会将该页面中所有链接节点(a节点)中href...
2021-07-10 18:56:59 1600 4
原创 Python爬虫编程思想(5):Session与Cookie
目录1. 静态页面和动态页面2. 无状态HTTP与Cookie3. 利用Session和Cookie保持状态4. 查看网站的Cookie5. HTTP状态何时会失效(1)与客户端有关(2)与服务端有关在浏览很多网站时我们会遇到这样的情况,第一次访问网站,会要求输入用户名和密码(有的网站也可以通过微信、QQ扫描二维码登录)登录,成功登录后。以后再登录该网站,会直接进入已登录状态,通常在网站的右上角会显示登录用户的昵称或账号。不...
2021-07-10 18:49:18 289
原创 Python爬虫编程思想(4):网络爬虫的基本原理
目录1. 爬虫的分类2. 爬虫抓取数据的方式和手段我们为什么将从互联网上下载资源的程序称为爬虫呢?其实这是一个很形象的比喻。整个互联网相当于一张用各种数据资源织成的大网,而从这张网上下载资源的程序相当于蜘蛛,为了获取资源,蜘蛛需要不断在这张数据之网上爬行,所以形象地将这种程序称为爬虫。由于这张数据之网的每个节点都包含了相应的资源(网页、图像或其他类型的文件),而且这些节点都有着千丝万缕的联系,也就是从一个节点可以通过这些联系(蛛丝)到达另外一个节点,因此,从理论上...
2021-07-09 22:21:25 572
原创 Python爬虫编程思想(3):网页基础
目录1. HTML2. CSS3. CSS选择器4.JavaScript整个互联网拥有数以亿计的网页,这些网页的样式千差万别,但不管是什么样的网页,都离不开Web三剑客对其做的贡献,它们是HTML、CSS和JavaScript。这三种技术是Web的核心,它们分工不同。HTML决定了Web页面上有什么样的组件(如按钮、表格、复选框等),CSS决定了Web页面上的这些组件如何摆放(布局),以及它们的样式,而JavaScript是一种编程语言,可以运行在浏...
2021-07-09 22:18:03 328
原创 Python爬虫编程思想(2):客户端请求与服务端响应
目录1. 客户端请求(1)请求方法(2) 请求链接(3)请求头(4)请求体2. 响应(1)响应状态码(2) 响应头(3) 响应体 网络爬虫的基本操作就是不断请求服务端,并接收服务端的响应。所以首先要了解客户端发送请求的方式,以及服务端响应请求的方式。本文将讲解这些内容。1. 客户端请求请求是由客户端向服务端发出的,可分为如下4部分。请求方法(Request Method) 请求链接(Request URL) 请求头(...
2021-07-08 17:28:31 541
原创 Python爬虫编程思想(1):HTTP基础
由于网络爬虫要处理的主要目标是网页,所以在编写爬虫之前,非常有必要了解一些爬虫的基础知识,例如HTTP、HTML、CSS、Session、Cookie等。在本专栏开始的几篇文章中会先讲解这些基础知识。1. URI和URL通过浏览器访问网页,首先就要接触到URL(Uniform Resource Location,统一资源定位符),不过在很多场景,经常会遇到URI,那么URI是什么呢?Uri的英文全称是Uniform Resource Identifier,中文的意思是...
2021-07-08 12:24:18 1452 6
原创 鸿蒙(HarmonyOS)支持低代码开发,无需HTML知识,就可以设计复杂界面
鸿蒙的最新IDE支持可视化开发。几乎不需要编写一行代码,就可以设计非常复杂的界面。当然,如果要实现业务逻辑,还是需要编写代码的。所以我们把这些功能称为低代码开发,也就是说,可以让我们少编写一些代码。
2021-07-02 16:31:23 95667 111
原创 【鸿蒙】6岁小外甥做了一个鸿蒙App,结果竟然无法在手机上运行,小子,你忘签名了!
程序千万行签名第一行程序不签名猿猿两行泪在真机上运行App与在模拟器上运行App不同。在真机上不管是调试(debug)还是发布(release),都需要对hap文件进行签名。签名一个hap文件需要4类文件:p12、csr、cer和p7b文件。其中p12和csr文件可以自助生成,cer和p7b文件需要到华为开发者网站后台去申请,然后下载。生成这4类文件,需要经过下面几步:1. 生成p12文件执行下面的命令,就会在当前目录生成一个名为demo.p12的文件。key..
2021-06-07 15:20:08 7949 27
原创 鸿蒙最新IDE(DevEco Studio)绝密档案大揭秘,绝对有你不知道的东西!
公元2021年6月2日,鸿蒙系统迎来了第2次开源,同时,用于开发鸿蒙App的DevEco Studio也迎来了重大的更新,这次更新是具有里程碑意义的,因为增加了很多非常牛叉的功能,而且编译速度得到了显著的提升。尤其是分布式模拟器,可以在无需真机的情况下开发分布式鸿蒙App。本文将深入讲解DevEco Studio推出的一些核心特性。
2021-06-04 13:34:50 30076 51
原创 女朋友今年想要特别的礼物,来块鸿蒙(HarmonyOS)运动表如何!顺便教女朋友开发鸿蒙App,结果却掉链子了,太尴尬了
本文主要介绍了测试鸿蒙手表App的3种方法,以及如何将手表App部署到真机的步骤。最后给出了部署失败后的解决方案。.
2021-05-30 21:27:22 1504 12
原创 小表妹想学鸿蒙(HarmonyOS)开发板,于是我翻出了所有的鸿蒙开发板,靠,全给我抢走了,简直是野蛮表妹!
所有流行的鸿蒙开发板都在这里!本文介绍了5种鸿蒙开发板:Neptune、HiSpark3861、HiSpark3518、HiSpark3516、小熊派。想知道他们有什么区别吗?应该如何选择吗?赶快学起来!
2021-05-24 21:19:07 6891 24
原创 震惊!全球最便宜的鸿蒙(OpenHarmony)开发板Neptune问世,只需9.9元,就可搞定一切,后续开发课程正在不断涌来
本文详细介绍了世界上最便宜的鸿蒙开发板的使用方法,包括简介、源代码下载、编译、刷估计等内容。
2021-05-13 10:28:56 47098 76
原创 9012年都过了,还不会用go modules配置本地模块同学真要死了!
go语言从1.11开始加入了新的依赖管理模块go modules,从1.17开始,go将不再支持通过GOPATH方式设置本地模块搜索路径,所以要用本地模块的,这是最后的机会,赶紧升级吧,否则程序就无法编译了。
2021-04-27 12:06:41 818
原创 鸿蒙手机什么时候可以上线?在你有钱的时候!
直播回放1. 鸿蒙支持工业modbus设备吗?回答:modbus是通信协议,移植相关驱动后,可以支持任何设备,据说有的参赛队伍已经做了鸿蒙DTU。也可以使用其他模块支持modbus,如4...
2021-04-23 15:55:18 1206 4
原创 【Python科学计算】使用NumPy水平组合数组和垂直组合数组
本文主要介绍如何用Python NumPy水平组合数组和垂直组合数组。水平组合数组使用hstack函数,垂直组合数组使用vstack函数。
2021-04-20 06:42:54 2695 7
GWT.in.Practice
2008-12-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人