自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高级深入--day47

因为redis数据库不能存储复杂对象(key部分只能是字符串,value部分只能是字符串,字符串列表,字符串集合和hash),所以我们存啥都要先串行化成文本才行。这里使用的就是python的pickle模块,一个兼容py2和py3的串行化工具。这个serializer主要用于一会的scheduler存reuqest对象。这里实现了loads和dumps两个函数,其实就是实现了一个序列化器。

2023-11-04 23:05:51 273

原创 高级深入--day46

根据源代码来看,scrapy-redis使用了scrapy本身的一个fingerprint接request_fingerprint,这个接口很有趣,根据scrapy文档所说,他通过hash来判断两个url是否相同(相同的url会生成相同的hash结果),但是当两个url的地址相同,get型参数相同但是顺序不同时,也会生成相同的hash结果(这个真的比较神奇。而分布式跑的话,就需要各个主机上的scheduler都连接同一个数据库的同一个request池来判断这次的请求是否是重复的了。

2023-11-04 23:05:10 436

原创 高级深入--day45

scrapy-redis工程的主体还是是redis和scrapy两个库,工程本身实现的东西不是很多,这个工程就像胶水一样,把这两个插件粘结了起来。scrapy-redis的官方文档写的比较简洁,没有提及其运行原理,所以如果想全面的理解分布式爬虫的运行原理,还是得看scrapy-redis的源代码才行。负责根据setting中配置实例化redis连接。被dupefilter和scheduler调用,总之涉及到redis存取的都要使用到这个模块。

2023-11-04 23:04:27 688

原创 高级深入--day44

,但是Scrapy多个spider不能共享待爬取队列Scrapy queue, 即Scrapy本身不支持爬虫分布式,scrapy-redis 的解决是把这个Scrapy queue换成redis数据库(也是指redis队列),从同一个redis-server存放要爬取的request,便能让多个spider去同一个数据库里读取。Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。

2023-10-29 23:09:12 999

原创 高级深入--day43

在“代理”后面的输入框选择“手动”,在“代理服务器主机名”后面的输入框输入电脑的ip地址,在“代理服务器端口”后面的输入框输入8888,然后点击“保存”按钮。打开Android设备的“设置”->“WLAN”,找到你要连接的网络,在上面长按,然后选择“修改网络”,弹出网络设置对话框,然后勾选“显示高级选项”。启动Android设备中的浏览器,访问网页即可在Fiddler中可以看到完成的请求和响应数据。里设置允许连接远程计算机,确认后重新启动Fiddler。代理地址(电脑IP):192.168.xx.xxx。

2023-10-29 23:08:04 177

原创 高级深入--day42

首先发送登录页面的get请求,获取到页面里的登录必须的参数(比如说zhihu登陆界面的 _xsrf)只要是需要提供post数据的,就可以用这种方法。如果实在没办法了,可以用这种方法模拟登录,虽然麻烦一点,但是成功率100%然后和账户密码一起post到服务器,登录成功。

2023-10-29 23:06:49 297

原创 高级深入--day41

的电影数据,并保存在MongoDB中。爬取豆瓣电影top250。

2023-10-26 22:46:16 323

原创 高级深入--day40

【代码】高级深入--day40。

2023-10-26 22:45:03 94

原创 高级深入--day39

爬取新浪网导航页所有下所有大类、小类、小类里的子链接,以及子链接页面的新闻内容。

2023-10-24 21:37:26 749

原创 高级深入--day38

爬取投诉帖子的编号、帖子的url、帖子的标题,和帖子里的内容。

2023-10-24 21:36:03 171

原创 高级深入--day37

【代码】高级深入--day37。

2023-10-19 18:49:18 400

原创 高级深入--day36

Scrapy设置(settings)提供了定制Scrapy组件的方法。可以控制包括核心(core),插件(extension),pipeline及spider组件。该字典默认为空,值(value)任意,不过值(value)习惯设置在0-1000范围内,值越小优先级越高。Item Processor(即 Item Pipeline) 同时处理(每个response的)item的最大值。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。下载器超时时间(单位: 秒)。

2023-10-19 18:48:04 294

原创 高级深入--day35

如果其返回 None ,Scrapy将继续处理该request,执行其他的中间件的相应方法,直到合适的下载器处理函数(download handler)被调用, 该request被执行(其response被下载)。如果其返回一个 Response (可以与传入的response相同,也可以是全新的对象), 该response会被在链中的其他中间件的 process_response() 方法处理。如果其返回一个 Request 对象,则中间件链停止, 返回的request会被重新调度下载。

2023-10-18 17:56:25 294

原创 高级深入--day34

使用Scrapy抓取网页时,如果想要预填充或重写像用户名、用户密码这些表单字段, 可以使用 FormRequest.from_response() 方法实现。通常网站通过 实现对某些表单字段(如数据或是登录界面中的认证令牌等)的预填充。如果希望程序执行一开始就发送POST请求,可以重写Spider类的。使用FormRequest.from_response()方法。方法,并且不再调用start_urls里的url。方法发送POST请求。

2023-10-18 17:54:42 279

原创 高级深入--day33

它是Spider的派生类,Spider类的设计原则是只爬取start_url列表中的网页,而CrawlSpider类定义了一些规则(rule)来提供跟进link的方便的机制,从爬取的网页中获取link并继续爬取的工作更适合。在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了某种特定操作,比如提取当前相应内容里的特定链接,是否对提取的链接跟进爬取,对提交的请求设置回调函数等。:指定该spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。

2023-10-17 19:15:28 186

原创 高级深入--day32

Item传给Item pipline持久化 , 而Requests交由Scrapy下载,并由指定的回调函数处理(默认parse()),一直进行循环,直到处理完所有的数据为止。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取item)。该对象包含了spider用于爬取(默认实现是使用 start_urls 的url)的第一个Request。当请求url返回网页没有指定回调函数时,默认的Request对象回调函数。包含了spider允许爬取的域名(domain)的列表,可选。

2023-10-17 19:13:45 234

原创 高级深入--day31

分配给每个类的整型值,确定了他们运行的顺序,item按数字从低到高的顺序,通过pipeline,通常将这些数字定义在0-1000范围内(0-1000随意设置,数值越低,组件的优先级越高)以下pipeline将所有(从所有'spider'中)爬取到的item,存储到一个独立地items.json 文件,每行包含一个序列化为'JSON'格式的'item'。当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。

2023-10-11 16:29:52 224

原创 高级深入--day30

Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方便我们爬取的网页中提取的数据。Scrapy Shell根据下载的页面会自动创建一些方便使用的对象,例如 Response 对象,以及。时, 将获取到一个response 初始化的类 Selector 的对象,此时可以通过使用。当shell载入后,将得到一个包含response数据的本地 response 变量,输入。将输出response的包体,输出。

2023-10-11 16:28:41 63

原创 高级深入--day29

Item 定义结构化数据字段,用来保存爬取到的数据,有点像Python中的dict,但是提供了一些额外的保护减少错误。要建立一个Spider, 你必须用scrapy.Spider类创建一个子类,并确定了三个强制的属性 和 一个方法。是的,就是 itcast,看上面代码,它是 ItcastSpider 类的 name 属性,也就是使用。是搜索的域名范围,也就是爬虫的约束区域,规定爬虫只爬取这个域名下的网页,不存在的URL会被忽略。:这个爬虫的识别名称,必须是唯一的,在不同的爬虫必须定义不同的名字。

2023-10-09 18:26:36 383

原创 高级深入--day28

Scrapy 0.25 文档 — Scrapy 0.24.1 文档。

2023-10-09 18:23:16 115

原创 三级网络技术总结

BGP是边界网关协议,而不是外部网关协议(是不同自治系统的路由器之间的协议)一个BGP发言人使用TCP(不是UDP)与其他自治系统的BGP发言人交换路由信息自治系统为单位结点数不小于自治系统BGP-4路由向量协议RIP距离向量协议update一个报文只能增加一条路由open分组周期性keepalive打开(open)、更新(update)、保活(keepalive)和通知(notification)

2023-09-22 21:47:39 190 1

原创 高级深入--day27

(其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。:它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给。框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常之方便。,我这里有两个结果,这个是我需要跟进的URL,还有这个是我获取到的Item数据。,这是下载好的东西,并且已经按照老大的。

2023-09-18 09:16:03 296

原创 高级深入--day26

第一列符号是图片中的每个字符,后面的 4 个数字分别是包围这个字符的最小矩形的坐标 (图片左下角是原点 (0,0),4 个数字分别对应每个字符的左下角 x 坐标、左下角 y 坐标、右上角 x 坐标和右上角 y 坐标),最后一个数字“0”表示图片样本的编号。首先要收集大量的验证码样本,样本的数量和复杂程度,会决定训练的效果。要训练 Tesseract 识别一种文字,无论是晦涩难懂的字体还是验证码,你都需要向 Tesseract 提供每个字符不同形式的样本。大多数其他的验证码都是比较简单的。

2023-09-18 09:14:18 59

原创 高级深入--day25

【代码】高级深入--day25。

2023-09-18 09:12:28 231

原创 高级深入--day24

那么,这些网络机器人究,竟是怎么做的呢?既然我们已经,可以成功地识别出保存在电脑上 的验证码了,那么如何才能实现一个全能的网络机器人呢?许多流行的内容管理系统即使加了验证码模块,其众所周知的注册页面也经常会遭到网络 机器人的垃圾注册。如果手头上有中文的训练数据,也可以尝试对中文进行识别。大多数网站生成的验证码图片都具有以下属性。可以查看当前支持的语言,

2023-09-18 09:11:08 66

原创 高级深入--day23

下面的程序就解决了这个问题:首先导航到托尔斯泰的《战争与和平》的大字号印刷版 1, 打开阅读器,收集图片的 URL 链接,然后下载图片,识别图片,最后打印每个图片的文 字。比如,通过给 Tesseract 提供大量已知的文字与图片映射集,经过训练 Tesseract 就可以“学会”识别同一种字体,而且可以达到极高的精确率和准确率,甚至可以忽略图片中文字的背景色和相对位置等问题。用 Tesseract 读取硬盘里图片上的文字,可能不怎么令人兴奋,但当我们把它和网络爬虫组合使用时,就能成为一个强大的工具。

2023-09-11 09:15:09 94

原创 高级深入--day22

在读取和处理图像、图像相关的机器学习以及创建图像等任务中,Python 一直都是非常出色的语言。Tesseract。

2023-09-11 09:11:31 78

原创 高级深入--day21

【代码】高级深入--day21。

2023-09-11 09:09:19 30

原创 中级深入--day20

【代码】中级深入--day20。

2023-09-11 09:08:00 41

原创 中级深入--day19

如果实际页面等待时间过长导致某个dom元素还没出来,但是你的代码直接使用了这个WebElement,那么就会抛出NullPointer的异常。所以 Selenium 提供了两种等待方式,一种是隐式等待,一种是显式等待。如果不写参数,程序默认会 0.5s 调用一次来查看元素是否已经生成,如果本来元素就是存在的,那么会立即返回。以上是三种选择下拉框的方式,它可以根据索引来选择,可以根据值来选择,可以根据文字来选择。下面是一些内置的等待条件,你可以直接调用这些条件,而不用自己写某些等待条件了。

2023-09-05 23:40:18 65

原创 中级深入--day18

WebDriver 有点儿像可以加载网站的浏览器,但是它也可以像 BeautifulSoup 或者其他 Selector 对象一样用来查找页面元素,与页面上的元素进行交互 (发送文本、点击等),以及执行其他动作来运行网络爬虫。是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界面的浏览器)。如果其他系统无法安装,可以从它的官方网站。

2023-09-05 23:32:48 225

原创 中级深入--day17

比如页面上的按钮只有当用户移动鼠标之后才出现,背景色可能每次点击都会改变,或者用一个 Ajax 请求触发页面加载一段新内容,网页是否属于DHTML,关键要看有没有用 JavaScript 控制 HTML 和 CSS 元素。jQuery 是一个十分常见的库,70% 最流行的网站(约 200 万)和约 30% 的其他网站(约 2 亿)都在使用。如果提交表单之后,或从服务器获取信息之后,网站的页面不需要重新刷新,那么你访问的网站就在用Ajax 技术。我们可以在网页源代码的。

2023-09-01 13:48:08 181

原创 中级深入--day16

小莫看到验证码有些傻脸了,不过也不是没有办法,先去学习了图像识别(关键词 PIL,tesseract),再对验证码进行了二值化,分词,模式训练之后,总之最后识别了小黎的验证码(关于验证码,验证码的识别,验证码的反识别也是一个恢弘壮丽的斗争史...),之后爬虫又跑了起来。小莫发现了新的限制后,想着我也不急着要这些数据,留给服务器慢慢爬吧,于是修改了代码,随机1-3秒爬一次,爬10次休息10秒,每天只在8-12,18-20点爬,隔几天还休息一下。通常情况下,在爬虫与反爬虫的对弈中,爬虫一定会胜利。

2023-09-01 13:45:29 912

原创 中级深入--day15

使用BeautifuSoup4解析器,将招聘网页上的职位名称、职位类别、招聘人数、工作地点、发布时间,以及每个职位详情的点击链接存储出来。

2023-09-01 13:44:02 1305

原创 软件项目管理

(1)什么是项目投标企业或单位,以公开招标的形式,由于各个公司进行竞争,并最终获取项目资格。(2)为什么要招投标公共单位30万以上的项目,必须采取招标形式。一定程度保障公平公正公开,减小贪污腐败。(3)招投标的流程1、甲方(出钱方)2、乙方(接项目,赚钱)3、招标公司(负责招标事务)标底:挂网的需求书质疑:乙方认为甲方的标底存在不不清晰或者不公正的点,可以申报质疑函项目存在质疑点,排他性项目存在非合理性 出示,挖掘使用证明项目质疑项目规则备注:投标公司少于3家,5家 自动作废。

2023-06-06 16:52:54 342

原创 JSP(Java Server Pages)笔记

语法格式常用指令指令<%%>模板元素htmlcssjs`…脚本元素<%java代码%>在_jspService()中,书写java代码jsp表达式<%=变量/有返回值的方法%>将数据显示到页面jsp声明<%!java代码%>在翻译后的Servlet类中,书写java代码注释<-- java代码 - ->----><%---->

2023-04-19 21:17:22 112

原创 逻辑地址转换为物理地址

1100 0010 0000(转换为十六进制为:6C20H)1100 0010 0000(后面12位为偏移量)首先计算 4k = 2^12k。所以它的偏移量为 12。

2023-04-18 11:30:07 429

原创 三类互斥资源

假设系统中有三类互斥资源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 1267 8

原创 三级网络技术

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

2023-03-27 11:42:32 1102

原创 中级深入--day14

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

2023-03-12 15:49:45 53

空空如也

空空如也

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

TA关注的人

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