自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 三类互斥资源

假设系统中有三类互斥资源R1、R2和R3,可用资源数分别为9、8和5。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下表所示。第一种情况(执行P1或者说P1执行的时间短)第一种情况(执行P5或者说P5执行的时间短)已分配给 P2 的资源(图表中)R1、R2、R3 已分配的资源数。R1、R2、R3 已使用的资源数。已分配给 P4 的资源(图表中)已分配给 P1 的资源(图表中)已分配给 P5 的资源(图表中)R1、R2、R3 剩余的资源数。

2023-04-01 12:01:50 1727 8

原创 三级网络技术

延时与延时抖动:延时是指数据包的第一个比特进入路由器,到该帧的最后一个比特离开路由器所经历的时间,该时间间隔标志着路由器转发包的处理时间。由于管道是由耐腐蚀材料做成的,所以这种方法对电缆提供了最好的机械保护,使电缆受到维修的机会减到最小程度。集群(Cluster)技术是向一组独立的计算机提供高速通信线路,组成一个共享数据存储空间的服务器系统,如果一台出现故障,它所运行的程序将转移到其他的主机。没有接收帧的目的MAC地址时,通过Flood技术的广播帧,交换机得到新的MAC地址对应的端口号,建立一个新的表项。

2023-03-27 11:42:32 1599

原创 中级深入--day14

contents 和 .children 属性仅包含tag的直接子节点,.descendants 属性可以对所有tag的子孙节点进行递归循环,和 children类似,我们也需要遍历获取其中的内容。组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,例如查找 p 标签中,id 等于 link1的内容,二者需要用空格分开。以上的 select 方法返回的结果都是列表形式,可以遍历形式输出,然后用 get_text() 方法来获取它的内容。

2023-03-12 15:49:45 89

原创 中级深入--day15

我们可以利用 soup 加标签名轻松地获取这些标签的内容,这些对象的类型是bs4.element.Tag。但是注意,它查找的是在所有内容中的第一个符合要求的标签。如果要查询所有的标签,后面会进行介绍。大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性来感受一下。既然我们已经得到了标签的内容,那么问题来了,我们要想获取标签内部的文字怎么办呢?a 标签里的内容实际上是注释,但是如果我们利用 .string 来输出它的内容时,注释符号已经去掉了。

2023-03-12 15:45:42 62

原创 中级深入--day13

和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。CSS 选择器:BeautifulSoup4。首先必须要导入 bs4 库。

2023-03-12 15:43:51 66

原创 中级深入--day12

因为python原生的list,dict等,都是not thread safe的。而Queue,是线程安全的,因此在满足使用条件下,建议使用队列。Queue是python中的标准库,可以直接import Queue引用;Queue.get([block[, timeout]])获取队列,timeout等待时间。Queue.empty() 如果队列为空,返回True,反之False。Queue.full() 如果队列满了,返回True,反之False。Queue.qsize() 返回队列的大小。

2023-03-12 15:43:43 62

原创 中级深入--day11

使用requests获取页面信息,用XPath / re 做数据提取。爬取糗事百科段子,假设页面的URL是。保存到 json 文件内。

2023-03-12 15:42:20 62

原创 中级深入--day9

适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。json模块提供了四个功能:dumps、dump、loads、load,用于字符串 和 python数据类型间进行转换。实现python类型转化为json字符串,返回一个str对象 把一个Python对象编码转换成Json字符串。Python 2.7中自带了JSON模块,直接import json就可以使用了。

2023-02-27 18:03:08 61

原创 中级深入--day10

JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。根据属性访问,Json不支持,因为Json是个Key-value递归结构,不需要。JsonPath 对于 JSON 来说,相当于 XPATH 对于 XML。迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)取父节点,Jsonpath未支持。

2023-02-27 18:02:43 61

原创 中级深入--day8

现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子,并且将该这个帖子里每个楼层发布的图片下载到本地。案例:使用XPath的爬虫。

2023-02-27 17:59:28 55

原创 中级深入--day7

3. 继续获取标签下hre 为 link1.html 的 标签。5. 获取 标签下的标签里的所有 class。6. 获取最后一个 的 的 href。4. 获取 标签下的所有 标签。2. 继续获取 标签的所有 class属性。8. 获取 class 值为 bold 的标签名。1. 获取所有的 标签。7. 获取倒数第二个元素的内容。

2023-02-27 17:57:20 123

原创 中级深入--day6

选取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值须大于 35.00。选取属于 bookstore 元素的 book 元素的所有 title 元素,以及文档中所有的 price 元素。选取 bookstore 元素的所有 book 元素,且其中的 price 元素的值须大于 35.00。选取最前面的两个属于 bookstore 元素的子元素的 book 元素。谓语用来查找某个特定的节点或者包含某个指定的值的节点,被嵌在方括号中。

2023-02-17 13:54:22 58

原创 中级深入---day5

通过 HTML DOM,可以访问所有的 HTML 元素,连同它们所包含的文本和属性。可以对其中的内容进行修改和删除,同时也可以创建新的元素。那就是XPath,我们可以先将 HTML文件 转换成 XML文档,然后用 XPath 查找 HTML 节点或元素。HTML DOM 定义了访问和操作 HTML 文档的标准方法,以树结构方式表达 HTML 文档。有同学说,我正则用的不好,处理HTML文档很累,有没有其他的方法?被设计为传输和存储数据,其焦点是数据的内容。XML 是一种标记语言,很类似 HTML。

2023-02-17 13:52:34 65

原创 中级深入--day4

比如,我们可以将得到的每个item不是打印出来,而是存放在一个叫 duanzi.txt 的文件中也可以。这样我们的url规律找到了,要想爬取所有的段子,只需要修改一个参数即可。最后,我们执行我们的代码,完成后查看当前路径下的duanzi.txt文件,里面已经有了我们要的内涵段子。打开之后,不难看到里面一个一个灰常有内涵的段子,当你进行翻页的时候,注意url地址的变化。然后我们实现保存的方法 ,当前页面的所有段子就存在了本地的duanzi.txt文件中。我们第一页的全部段子,不包含其他信息全部的打印了出来。

2023-02-15 08:46:49 57

原创 中级深入--day3

在某些情况下,我们想匹配文本中的汉字,有一点需要注意的是,中文的 unicode 编码范围 主要在 [u4e00-u9fa5],这里说主要是因为这个范围并不完整,比如没有包括全角(中文)标点,不过,在大部分情况下,应该是够用的。如果 repl 是字符串,则会使用 repl 去替换字符串每一个匹配的子串,并返回替换后的字符串,另外,repl 还可以使用 id 的形式来引用分组,但不能使用编号 0;finditer 方法的行为跟 findall 的行为类似,也是搜索整个字符串,获得所有匹配的结果。

2023-02-14 22:48:43 58

原创 中级深入--day2

我们在昨天的案例里实际上省略了第3步,也就是"取"的步骤。因为我们down下了的数据是全部的网页,这些数据很庞大并且很混乱,大部分的东西使我们不关心的,因此我们需要将之按我们的需要过滤和匹配出来。那么对于文本的过滤或者规则的匹配,最强大的就是正则表达式,是Python爬虫世界里必不可少的神兵利器。明确目标 (要知道你准备在哪个范围或者网站去搜索)处理数据(按照我们想要的方式存储和使用)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)为什么要学正则表达式。

2023-02-14 22:43:49 55

原创 中级深入--day1

一般来讲对我们而言,需要抓取的是某个网站或者某个应用的内容,提取有用的价值。内容一般分为两部分,非结构化的数据 和 结构化的数据。不同类型的数据,我们需要采用不同的方式来处理。转化成Python类型进行操作(json类)转化成Python类型(xmltodict)非结构化数据:先有数据,再有结构,(结构化数据:先有结构、再有数据(文本、电话号码、邮箱地址。

2023-02-10 21:45:32 65

原创 浅学爬虫--day15

很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为"字节"。再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样是好的,于是它们就这机器称为"计算机"。开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态。他们把其中的编号从0开始的32种状态分别规定了特殊的用途,一但终端、打印机遇上约定好的这些字节被传过来时,就要做一些约定的动作。

2023-02-10 21:36:06 376

原创 浅学爬虫---day14

如果程序里所有的请求都使用自定义的opener,可以使用urllib.request.install_opener() 将自定义的 opener 对象 定义为 全局opener,表示如果之后凡是调用urlopen,都将使用这个opener(根据自己的需求来选择)如果在 HTTPHandler()增加 debuglevel=1参数,还会将 Debug Log 打开,这样程序在执行的时候,会把收包和发包的报头在屏幕上自动打印出来,方便调试,有时可以省去抓包的工作。

2023-02-04 22:33:42 387

原创 浅学爬虫--day13

上面我们说了Request请求对象的里有data参数,它就是用在POST里的,我们要传送的数据就是这个参数data,data是一个字典,里面要匹配键值对。接下来,我们写一个百度贴吧爬虫接口,我们需要传递3个参数给这个接口, 一个是main里组合的url地址,以及起始页码和终止页码,表示要爬取页码的范围。发现规律了吧,贴吧中每个页面不同之处,就是url最后的pn的值,其余的都是一样的,我们可以抓住这个规律。CA的作用是检查证书持有者身份的合法性,并签发证书,以防证书被伪造或篡改,以及对证书和密钥进行管理。

2023-02-04 22:30:58 297

原创 浅学爬虫---day12

但是这样直接用urllib给一个网站发送请求的话,确实略有些唐突了,就好比,人家每家都有门,你以一个路人的身份直接闯进去显然不是很礼貌。实际上,如果我们在浏览器上打开百度主页, 右键选择“查看源代码”,你会发现,跟我们刚才打印出来的是一模一样。也就是说,上面的4行代码就已经帮我们把百度的首页的全部代码爬了下来。但是如果我们用一个合法的身份去请求别人网站,显然人家就是欢迎的,所以我们就应该给我们的这个代码加上一个身份,就是所谓的User-Agent头。一个基本的url请求对应的python代码真的非常简单。

2023-02-04 22:26:46 335

原创 浅学爬虫--day11

Fiddler启动的时候,默认IE的代理设为了127.0.0.1:8888,而其他浏览器是需要手动设置。启动Fiddler,打开菜单栏中的 Tools > Telerik Fiddler Options,打开“Fiddler Options”对话框。另外我们要用Fiddler获取本机所有进程的HTTPS请求,所以中间的下拉菜单中选中...from all processes (从所有进程)Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。

2023-02-01 22:31:18 286

原创 浅学爬虫--day10

在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie。如果我们想跳过 12306 的证书验证,把 verify 设置为 False 就可以正常请求了。要想检查某个主机的SSL证书,你可以使用 verify 参数(也可以不写)私密代理验证(特定格式) 和 Web客户端验证(auth 参数)

2023-02-01 22:23:41 258

原创 浅学爬虫--day9

当收到一个响应时,Requests 会猜测响应的编码方式,用于在你调用response.text 方法时对响应进行解码。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。虽然Python的标准库中 urllib 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 "HTTP for Humans",说明使用更简洁方便。

2023-01-23 17:22:50 282

原创 浅学爬虫--day8

而在Python 3中把两者给分开了这个在使用中需要注意。实际应用中在互联网上是通过二进制进行传输,所以就需要将str转换成bytes进行传输,而在接收中通过decode()解码成我们需要的编码进行处理数据这样不管对方是什么编码而本地是我们使用的编码这样就不会乱码。在Python 2中由于不区分str和bytes所以可以直接通过encode()和decode()方法进行编码解码。bytes是Python 3中特有的,Python 2 里不区分bytes和str。bytes通过decode转化为str。

2023-01-23 17:20:01 231

原创 浅学爬虫---day7

例如:请求的资源已经移动一个新地址、常用302(所请求的页面已经临时转移至新的url)、307和304(使用缓存资源)。400~499:客户端的请求有错误,常用404(服务器无法找到被请求的页面)、403(服务器拒绝访问,权限不够)。服务器和客户端的交互仅限于请求/响应过程,结束之后便断开,在下一次请求时,服务器会认为新的客户端。为了维护他们之间的链接,让服务器知道这是前一个用户发送的请求,必须在一个地方保存客户端的信息。响应状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值。

2023-01-23 17:17:39 227

原创 浅学爬虫---day6

这个响应头也是跟缓存有关的,告诉客户端在这个时间前,可以直接访问缓存副本,很显然这个值会存在问题,因为客户端和服务器的时间不一定会都是相同的,如果时间不同就会导致问题。一般分块发送的资源都是服务器动态生成的,在发送时还不知道发送资源的大小,所以采用分块发送,每一块都是独立的,独立的块都能标示自己的长度,最后一块是0长度的,当客户端读到这个0长度的块时,就可以确定资源已经传输完了。http协议中发送的时间都是GMT的,这主要是解决在互联网上,不同时区在相互请求资源的时候,时间混乱问题。常用的响应报头(了解)

2023-01-19 21:23:44 231

原创 浅学爬虫---day5

POST请求参数在请求体当中,消息长度没有限制而且以隐式的方式进行发送,通常用来向HTTP服务器提交量比较大的数据(比如请求中包含许多参数或者文件上传操作等),请求的参数包含在“Content-Type”消息头里,指明该消息体的媒体类型和编码,q是权重系数,范围 0 =< q

2023-01-19 21:21:04 207

原创 浅学爬虫---day4

浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如Images文件,CSS文件,JS文件。URL(Uniform / Universal Resource Locator的缩写):统一资源定位符,是用于完整地描述Internet上网页和其他资源的地址的一种标识方法。SSL(Secure Sockets Layer 安全套接层)主要用于Web的安全传输协议,在传输层对网络连接进行加密,保障在Internet上数据传输的安全。query-string:参数,发送给http服务器的数据。

2023-01-18 22:42:12 250

原创 浅学爬虫---day3

从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果。取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。但是搜索引擎蜘蛛的爬行是被输入了一定的规则的,它需要遵从一些命令或文件的内容,如标注为nofollow的链接,或者是Robots协议。其中的页面数据与用户浏览器得到的HTML是完全一样的。

2023-01-18 22:38:02 221

原创 浅学爬虫---day2

6. 爬虫(Spider)、反爬虫(Anti-Spider)、反反爬虫(Anti-Anti-Spider)之间的斗争....4. Scrapy框架以及scrapy-redis分布式策略(第三方框架)1. Python基础语法学习(基础知识)2. 对HTML页面的内容抓取(数据抓取)3. 对HTML页面的数据提取(数据提取)

2023-01-16 20:00:09 313

原创 浅学爬虫基础--day1

从今天开始学习并且发布爬虫基础内容,和大家一起进步,一起成长

2023-01-16 19:49:58 310

原创 12306爬虫抢票软件代码

'''1、需要登录页面,手动输入账号密码!2、地查询车次,输入 起点、目的、出发时间,找到车次,就进行选择3、选择完成后,就查询该车次是否有余票(进行显示)如果有就进行购买,没有就进行循环4、如果有就进入购买界面,找到 或者 输入 乘车人信息 ,提交5、点击提交按钮,付款完成抢票https://kyfw.12306.cn/otn/leftTicket/init?linktypeid=dc&fs=%E5%8C%97%E4%BA%AC,BJP&ts=%E4%B8%8A%E6.

2022-01-09 21:05:21 1545

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除