00:00
位伙课去这页它在网站上默认你打开之后是第一页嘛,然后呢,我们看一下打打开第二页,它这个网址就变了,发生这个结果是28,如果是接下来往下看啊。如果下一页第三页。结果是三,如果是第四页,结果是四,对吧,如果是第五页,那就很明显了,第五页是五,对不对,那这样的话它有多少页,它有3000多页这了啊,它有3000多页啊好,那这样的话就是你只要保证你的请求频率不是特别高的话,情情况下,我估计慢慢爬慢慢爬,这这个3000多页的数据你都能爬下来啊,这样的话你IP超多啊,超多啊呃,另外一个问题就是说我们现在这些数据啊,就是当前这一个网页,我大家去做一下分页数据的排取,然后剩余的网页的话,你自己都可以做啊,自己都可以做啊啊好了,那么看一下啊,第一页它的结果是一,第二页是二,然后第三页是三,有小伙伴说,哎呀不对呀,第一次我们访问的时候,这个位置并没有这个一啊,我们直接访问N不就可以了吗?对,也就是说你第一次访问的时候,它默认就第一页,默认第一页,然后当你点击第一页的时候,等于把当前这个一页的这个页数给传进来了,所以他这个结奏第一啊,如果啊做过相关的这个bug开发的小伙伴,应该对这个比较熟悉,比较了解啊,呃,没有开发过的应该也很好理解这个,呃,简单理解这个东西啊好了,那么接下来真的,呃,这个网页的这个叫内容已经,就是你去分析网网站的时候,就看他的这个UR变化就能分析出来它这个分页是怎么做的啊,就是传递对应的数据可以了,好,那么现在这个分页的。
01:21
已经有了之后,那么接下来我们主如何取这种分页的数据啊,我们大家来看一下,那么在这个地方右键。创建的脚本哈,来第这第五个来这个叫爬虫进阶,爬虫进阶啊,爬虫进阶啊,我们这个叫。实战啊实战,这叫这叫分页,分页数据数据。嗯。分页数据。查取吧啊,分页数据爬取这个页,哎,好吧,分页数据爬取好,那我们来看一下啊,就是我们呃,查这个网站的时候,首先我们来大概这个分析一下啊分析啊分分析啊分析啊分析一下这个网站的这个UR地址是这样的啊urr地址啊,它是啊它是这样的啊,就是说你上面这个位置啊,这是一对吧,如果是这是第二页的话,诶。
02:10
第comment c啊来这是第二页对吧?然后呢,接下来这是第三页,那以此类推的话,就是每一页这个,呃,后边这个数字变一加一是不是就可以了啊是有这种情况啊,还有还有的一种这样的,就是第一页是零,第二页是十,第呃三页是20 20啊是有这样的,然后呢,还有是第一页是一,第二页是啊,这个叫二,然后第三页呢,是那个叫什么呢?啊是三,然后第四页变成了来CTRLC,第四页变成了五,那么请问那么第六页下一页应该是多少呢?下一页应该是这样啊,就是各位小伙伴你去分析啊,123诶怎么掉成五了呢?对不来,然后下一页告诉你呢,下一页告诉你是多少是吧?对,一伙们发现了啊,我天呐,它竟然是一个非波大级数列,对不对啊,所以就是你只要能搞清楚它这个每个页面的变化啊,每个页面分页的变化,找到它的这个啊,这个技巧啊,那么每个页面你都可以排除下来啊,好了,那么现在我们就知道它这个我们当前要查的这个新代理这个网的这个这种方式啊,好了,分析这个网页,这个网页中呢,哎,这个是第一页,然后这个呢是第二页,第。
03:10
第二页啊,然后这个呢,是第三页啊,第三页啊,后边以此类啊,以此类推好了,那么这样的话我们分析出来啊,那么接下来我们如何去爬取啊,如何去取,首先是这样啊。首先你在爬的时候呢,啊,你要给我们啊,这个叫做,呃,有一个东西叫做负责拼装一个啊,就是啊,专门有一个负责拼装这个UR的啊UR的也就是说这样我们是想排取多少页,你看你这个页面当中是不是已经有三千九百十三页,好那我们我们先别写那么多,就写个十页好吧,好,我们在这里做一个做一个这样的操作哈,呃,第一个程序叫D。DMN啊,然后呢,Main呢,你给我一个这个number的数字,我就告诉你这个啊完成这个第一页,第一页的话怎么做呢,我就把这个UR在这个地方呢定义一下。定义好啊,把它在这个位置定义好定嗯,Sorry啊定义好定义好,呃完成以后呢,定义完成以后呢,就是说你每次给我的那个页码数啊,每次给我一个页码数就行,我把那个页码数给你拼到这个位置啊,拼到这个位置来画括号,画括号这个,那然后这个是变成F就可以了,好啊,这个F大家知道吧,这个是拼接啊,拼接就是可以用我们这个内容,这个F直接在字符号当中拼接变量,那个是用法,就是呃变在使用变量的地方用画号括下来就可以了啊好,这个是拍3.7的新特性啊,3.6好像就加了啊小伙伴如果没用过的话,可能没了解吧啊这个是拼接,也就是说专门有方法只拼接URL的UR,好然后呢,拼接完URL以后呢,接下来这个方法里边干什么呢?哎,去调用,去调用,它只是负责拼接,拼接完成后干什么,它调用一个叫做调用一个请求,请求页面的啊,页面的这个程序,请求页面的程序,也就是说在这个地方呢,它去调用啊调用啊,那HHTMMR,那就它返回的肯定是HTML嘛,对不对,那么S代码页面的话,等于get配置,比如说我们这个时候,哎,传一个UR进去,那么这个时候UR进去,也就是说剩下的我们还有一个。
04:57
啊,该怎么了啊,这个是我们的主程序啊,这是主程序,主程序好,然后呢,这样的话,我们是不是还有个盖在配置上的一个方法,哎上面所以这个地方呢,Get df叫get配。
05:07
诶。啊,这个方法,那么这个方法呢,它就是一个UR参数,然后接下来干什么呢?哎,通过这个使用,这个叫使用这个指令的UR请求参数啊发送请求就是使用啊就是就是请求请求指定的URL,请请求指定的URL,然后呢,返回请求的页面,请求的页面页面就这就这个东西啊就这东西好呃,这是我们当前的这个叫页面请求函数,页面请求函数页面请求函数,那么页面请求函数,页面请求函数是不是最终要返回这个叫什么呢?返回我们的这个叫呃页面的这个AR内容对吧?所以我们这个地方呢,可以判断一下,如果他,哎if这个叫SR内容返回的如果正确啊,就是判断一下,如果SR的结果是正确的,正确的话怎么办呢?啊,我们这个时候干什么呢?啊,专门去调用一个方法去解析啊,就是调用啊,再调用就是调用解析HD的方法的方法啊,解析数据的啊这么一个方法啊,那么这个法这个我们叫pass。
06:06
Pass。符号,然后呢,把C传进去了,把我们这个叫A,呃,刚才返问的H2给返回啊给传进去,传进去的话呢,他是不是给我返这个列表之后,是不是把分析的那个结果我返回啊返回来,呃,分析数据排序,那么接下来我们再去定一个方法叫做什么呢?啊解析页面数据解析叫解析页面页面页面ST的数据数据,那么DF。呃,把这个方法呢,去定一下啊,定一下以后呢,这个方法里边是可接受那个H盘参数啊,H片门的参数,来这里边pass先pass掉啊好,它返回的最终是返回什么,返回我们的那个数据回来啊,返回数据回来以后呢,剩下的我们再去调用方法干什么呢?哎呃,再去调用方法,调用方法之后呢,去写入到我们的这个啊把这个是把返回到,就是把返回到这个数据返回到解析,返回到解析到数据数据啊去。
07:03
啊去叫什么去发到发请求发请求,测试测试发请求。请求测试是否好用,好用好用啊好用啊,好用的话,这怎么测试呢?就是把你这个例子呢传进去,它是给我们返回啊,那么这个位置就是啊OK历吧,我们叫做OK历史,它给我们再返回一个历史,OK值好等于我们当前的叫。啊,我们看一下。Test t I后去这个内容,我们测试I啊,这个是测试IP,测试IP是否好用,IP是否好用,好用啊,是否好用好DF把这个放定义下。然后他接触的是一个啊历史啊历史的列表,好,那我先pass,那那它这个如果说好用之后怎么呢?诶好用之后呢,就是把这个叫什么,把把返回到返回到返回。
08:06
啊,好用的好用的,这个叫IP数据,IP数据写入,写入文件,写入文件,剩下的就是在这个脚本当中开始往里写就行啊,开始往里写就可以了啊好了,嗯呃,比如说这样的吧,我们做一个叫for,哎,In,哎in哎哎in,我们当前的OK please的括号,哎,我们每一。好像。合适吧,我们还不还不如自己写呢,对吧?啊到时候就在这里直接写就行了啊就当就当一个完成啊好了,呃,基本上我这我这个呃模式大家应该都听清楚了啊,就说我们在这个位置啊在呃在一开始的位置,你给我一个参数,我就告诉你我要那个叫拼接这个UR,然后拼接UR之后呢,我就发给这个get配置get get配置方法就是请求页面数据,去把页面数据返回来以后呢,我在这里呢,判断它成功还失败了,如果成功之后呢,啊,去调用这个解析A玩的方法,那么A玩方法解析成功以后呢,啊,这个把数据啊,把查到的IP返回,IP返回以后呢,我们再去调一个方法呢,专门去测IP好不好用,那么把撤回来的IP,好用的IP呢,再写到文件里边啊,这是我们当前就是完成了这个叫啊这个什么啊,分页盘取这个代理IP网站的这这样的一个数据上的一个功能啊好了,那么这个里面搞定以后呢,我们来测试一下,就怎么去使用呢,是这样的哈,我们在这里面呢,做一个衣呃杠杠内磨。
09:18
杠杠name杠杠等等于如果杠杠man杠杠,然后这个时候呢,大家能看懂我上面写这个代码吧,就说如果如果当前,就是如果学过基础的小伙伴应该能理解哈,就是如果当前这个刚刚诶。这个这个这个脚本啊,这个脚本是脚本是作为主程序,作为主程序,主程序使用使用,那么杠杠诶下线啊下线下面杠杠内膜诶杠杠内幕杠杠的结果,这个变量的结果就是就是这样,杠杠刚刚ma man刚刚啊有些我们说那除了这个作为主动序还有什呢,还有可能被导包嘛,就是我们拍yon里边不是可以写那个叫音炮的这种导包嘛,如果这个程序是被导入使用这个自代码就不会再执行了,就这个意思啊来注意这个地方啊,来我们看一下怎么去做呢,For I in for for I in,我们的run吧,Run,然后呢,从零到十,正好是呃,从零到十对吧,从一。
10:18
从一到11啊,那这样的话是十个页面对不对,十个页面哈,那么这个时候呢,它只需要啊这个print啊print哎告诉我当前啊,当前正在正在滑雪,滑雪第几页第几页是吧,几页啊这个地方诶括号我们到。窗括号啊,我们当前的F啊,然后下面加一个F对吧?接然后呢,呃,完事以后呢,就把我们这个叫什么调用一下我们这个main程序,然后把我们当前的这个叫I传进去就完事了,对不对,然后呢,传完去以后呢,注意啊,我们每次爬完页面之后呢,导出一个time.sleep s sleepp,你不要太快了好吧,每次停上的,你每次就是停上边,也就说每爬取每爬取爬取一次,呃一个每爬取一个页面,一个页面,页面后停顿啊就是停顿两秒。
11:04
停顿两秒啊,你不要太快啊,太快的话没不是啥好事啊,快了好事啊,快了快了的话你女朋友要生气吧,来的太好,来看下啊,这个位置基本上就我们现在这一步已经做完了哈,做完了呃,剩下的我们来看一看,剩下的要做什么呢?嗯,我们在这里边。来先右键运行一下吧,看看正在排取第一页是吧,然后呢,正在排取第二页,你看就这样的一个过程啊,正在排取第三页,就这样的话,你清楚的知道哦,我现在排到第几页一个数据了啊就OK了,好了啊,当然现在是个假的啊,因为什么呢?我们程序呃,虽然这个结构基本搭建了,但是程序代码基本上没写啊对来除了第一个,第一个写完以后呢,它这个呃请求是不是要呃到我们刚才那个这个位置了,这个位置要请求这个页面的话,就跟我们上次这个页面是一样的,所以呃,这个请求到头需要定义。在这里来非常简单了,设计就比较简单了,填代码就好了,你看程序设计的好的话,只需要填代码知道吧。导入请求。
12:06
跨和验证来CTRLC复制。这里边是发起请求和验证对吧?发起请求和验证,验证成功以后来我们当前的response re,呃,Re res po response,那如果不正确,那么returns这个地方return一个,我们的bos FA啊,Return一个啊,这样的话就是页面请求这一部分啊,取求部分完成以后呢,剩下的这页面解析,页面解析的话,诶,把我们这个页面的解析拿过来,CTRLC。复制。回到这回到哪呢?回到这个位置来解析的话,就放到这啊呃就解,所以我们这个是不是也需要导入来上面这个CTRLC复制。来这里来一啊一如果解析的正确就take对吧,如果这个过程当中出现了异常,这里用exl就后呢,没有问题,以后这个地方呢,测试IP啊,诶这是哪里呢?我看一下啊二返回成功以后,如果嗯。
13:17
看一下还得加一个判断什异呃历的啊,结果如果为真,那这个时候怎么办呢?啊,再去调用这个数据啊,再去解析这个数据啊,再去调这个测试IP,这个IP测试的话,就得用我们上节课讲的那个方法是,呃哪个呢?It。来说一下,看一下这个测试IP特里啊,哎,你给我的是一个呀,给我的是一个IP还是一个列表数据,我看一下。如是一个列表数据是吧,我能给我们一个呢,我看。最好是直接给我一个,我就一个IP返回以后就是直接告诉你好不好使,对不对,所以这个地方呢,就是如果好使的话,这个地方写一个循环for I for I。
14:13
嗯,追加到这个叫OK list OK list等于它等于一个中号,然后呢,这边写OK list,点点把这个结果给我追加进去,来把这个结果我返回。返回,他只返回好的,不好的就不返回了。我们是不还可以做判断。判断这个。这个看一下它返回。他返回什么的,他返回你看这么写好像还挺麻烦。算了算了算了,这个位置就直接用那个谁吧,啊,直接还是用我们这个原来那个写法,原来那个写法的话,就是不用循环啊,不用循环的话,把这个啊,把这个写把这个,呃,如果你返回到这个数据正确的话,我直接这里去做测试的话,就是这个位置,OK list,等于我们在这里去调用那个叫ts test IP,然后把list发给他。
15:06
然后呢,这个其实我真的很想,就只给他一个I,你知道吧,就是说这个页面里边你就直接给我一个IP,我别的啥啥也不管,啥也不管,就应该是这样的啊。我有点纠结了,各位小伙伴。哎,算了吧,别纠结,别纠结,来,放到这里。诶,怎么还运行着了。请求失败,当然请求失败了。不用管,甭管那边请求失败啊,来放这里啊,请留在UR,然后呢I pip的话就这个位置啊,这样依然就是还是使用IP,它最好是给个IP,然后呢,我把这个IP放到。给我I。中号零,然后这个。冒号后面是划括号,IP中号一。然后这个是。数字。复制,然后把这个放到。
16:00
然后呢发嗯,有问题啊,然后呢,这个地方发请求请求验,如果成功则。看一下啊。如果成功者,然后这个IP。为处。看。如果成功。就这个位置吧,如果他成功的话,这个位置直接return啊,然后呢,如果如果是后来的话,就2FALSE fa21,然后最后的话,这个如果说他请求失败的话,直接也是false就完事了,就是你当前这个请求肯定是有问题的啊,所这样的话就是还是给我一个IP点,所以这个位置啊,这个位置看一下,呃,List在这个地方呢,传往里传的时候呢,是传一个一个传进去,一个一个传进去的话,我们看一下啊。来IP list,然后呢,这个地方呢,把IP进去。
17:11
的结果,如果正确,如果真,那么这个时候呢?啊,我们去定义一个新的数据。角等于中号。然后把这个数据,把这个数据我加来的话,就是使用我们的这个叫做。P全部写进去,写的话就是呃,位置。嗯。点W,我写的话是用写括号。
18:06
呃,贝和我们的FP方面,当然这个阶层你是要导入啊,这个阶层模块啊,建设模块有这么一个方法是可以写入的哈,来解。测试一下吧,好吧,我们来测试一下啊呃,先别测那么多了,就个这个两三页就好了,来右键运行中你快点。正在发掘。第一。WB不对。们这个WB加会有问题的啊,WB加有问题。应该是最大的房子,所以这个人应该换一下,换一下哎,当天第一页第一页就停下来了,我看正正在第一页,然后看这边啊。以后get。
19:02
嗯。策略的干道配置。六二二传进来发请求。响应数据Bo返回。来我们每一个方法里边来把这个看走到哪哈,这是页面请求。函数来CTRLC,复制一下页面请求以后,这里再解析页面对吧,然后这个是解析页面数据CTRLC。然后下边是叫什么定义请求啊,这个叫测试,IP p prt,这个叫测试。啊,还有吗?没有了啊,来。这个返回,然后交给他解析,解析完以后呢,去呃测试I pip,测试完之后写入来重新运行,看看有没有问题。那程序有问题吗?
20:00
右面请求测试IP测试IP。就是你,哎呀这个测IP会比较慢。拆批的话会比较慢。测试IP。我们要不然这个IP就先别测了,好吧,因为你测IP的话,这个这个好麻烦好麻烦啊,这个IP我们就先不测了,不测的话就直接把这个返回的数据直接给我写入来这个位置直接把a list给我写进去就完事了,我们快一点。嗯。A。然后LP来写入A加,用Jason写行不行啊行,可以来右键重新运行。要不然太慢了。呀,我当天这个程序怎么回事。
21:02
啊,他说这个写入数据的时候出现问题啊,出现问题什么问题呢?我们来可以来看一看啊这个数据。在这个地方先打一下看看啊,来看一下我们当前的呃,例子这个结果来右边运看到。这个结果页数据。数据完事了吧,那么这里边题就是这个没。没法转。原组发展是在哪个过程呢?就是我们解析页面数据的时候,这个位置用的是这个,然后做了一个压缩,那如果想想啊,我们有没有别的方法。这里换。啊,这样吧,我看一下啊。换成这个IP泡。嗯。冒号。IP。
22:00
我们当前的还得循环,好麻烦。嗯,我看有没有别的方法,别的方法,哎,俩俩可以。这样两个两个转的话。我里边可以这样做,可以再转一下,看一下这样做处理行不行。来六天就行。不行,不行不行。问题问题IP了,IP就了这个位置是这一转,转完以后里。嗯,我们怎么把这个数据一个一个拿出来进行处理,然后会追加到一个字典当中,就是它最好是一个字典,因为还是如果是列表的话,老是出这个问题啊。先看一下我们的数据结果,数据结果中间是一个组,我想把这个组啊,就是把这个里边的组。
23:05
都给我换成字典,怎么去做?我们写一个叫做。等于括号。处理。处理的话就是。就是二中号的零。零和冒号二,中号一。来再看这个对不对。然后再用号。不行。是返回一个列表啊。嗯,对的。我们当前对列表这个数据。看一下啊,看一下别着急吧,这里是圆组一逗号二。
24:04
这里逗号圆组一逗号,然后我想把它变成。变成号里边是一个字,里边是一个字的话,就是首先它还是一个列表吧,但里边变成字典,字典的话就是里边是一冒号。逗号。一冒号二。我们看一下一冒号二的话,Date首先是一个大列表,其中的I就是取出了每个元素,那么I需要处理成这种格式,它是一个元组处理成这样的格式。那就是你把这个画框。注意。处理,然后呢,最后这个结果我转成一个这里来运行。OK了。OK的小伙伴啊。可以了。以后我们看每一页的数据都这么写。每一页的数据都这么写,最后写的这个东西。
25:02
我们还是没法看。还是没有看。呃,就是现在的话是可以用转,但是。你转一个页面,你只能转就是一个页面,就是呃,就是怎么说呢,就是阶层的数据是格式这样的啊,就是呃,你你这个东西可以叫做阶层,对吧?然后呢,你这样写它也叫阶层,也叫阶层,但是呢,你这么写它就不是阶层了,就是你复制又又后边又写了一个脏的东西,它就不叫阶层了,它这个东西就有问题了,这个东西会有问题啊,这样写会有问题,你想怎做?啊,当前的数据。写进去。然后。一个一个往里怎么做。转成阶层的珠串进去。看下能不能转成的支付号往里扔。现在据格式基本符合我们要,但是怎么把这个结果转成一个字块一行一行一行方式。
26:06
写入循环,写入在这个过程当中去循环我们的。Least。把这个need。循环我们当前这个结果,然后的结果当中的这个I进行一个处理,我们处理呢,I是一个这的结果,对吧,把这个结果云接指标单独往写啊,那就是阶。Down,然后按,然后第二双。第二张这个FP一下,好,最后我们这个这个数据的格式是我们能看懂的啊,来这个位置直接后缀名叫接什么来右键运行中看着。有。Lp direct。畜。接生者。而大同。Have a。为什么说我写入的数据有问题啊?
27:05
那我这么写,那我这么写,那我就这个位置用我们的啊。W。嗯。循环啊,用阶层用这个叫FP.wr写入,写入I的时候,I需要进行一个处理,那就是点MPS,你不让我这么写,我就这写对不对,然后呢。哎,再加一个,在每一个换一行,就f op p fop.Y的再写入一个换行啊,嗯。嗯,运行。阶层点点爱为什么不能?C。这个结果来先不往里写,掉点运行。我这个内容为什么不让我写?这是这块啊。
28:09
A。A加。啊,就这。可以了,各位小伙伴看。看吧,这数据都写完了,都完成了,全部完成啊,全部完成对。这是这这是一,呃这是几页的数据,这应该是呃多少个数据,两百两百个数据的话,正好是两页,两页数据对不对啊,我们排了就两页啊好,这个数据已经写入成功了啊来我们测试一下吧,来把这些都呃看看到这边的数据,然后这个不用管它这不用管,然后这个干掉干掉,来回顾一下哈,这位的我们首先在这个循环当中去,呃指定爬了多少页数据,比如说我爬个十页,爬完十页数据,然后呢,这个告诉我正在爬第一页,然后呢,把这个I传进来以后,每一页爬完之后呢,睡两秒,那么接下来呢,走到主程序里边啊在这个过程当中呢,把这个UR拼接完以后呢,去向这个页面发请求,请求完以后呢,这个数据里边啊呃,请求完页面之后,回过来调类方法去解析数据,解析完数据之后呢,把数据IP我直接存进去了,这个地方我并没有测试啊,并没有测啊,其实因为要测的话就是。
29:08
速度会慢啊,所以我这当然测试,咱们原来都已经呃测过这个代码,它好使啊,对,只不过太慢了,我就把它注册,然后正剩下的呢,就是把这个每页返回的数据给我最加写入到IP date这个点这个文件里边,然后呢,上面这个位置呢,哎,会告诉你当前测略解析数据,还是测试IP,然后还有包括这个呃要他距页面数据啊对,这都这都有内容啊,这都有格式好了,那这样的话就你知道我们当年爬了多少页了吧,来,所以这个时候我们怎么办呢?来回到我们的。页面当中把这两个数据给我删掉。然后呢,重新去就可以了,来右键。八。排了几样,Sorry。啊,爬了爬了一到19页。九页第一页,然后到第九页,第九页啊对,然后。啊,你看第一页第二页第三页第四页第五页第六页,嗯。嗯,第九页大概应该在900条数据左右,那么如果对的话,就证明没问题是吧?嗯,来看一下数据。
30:01
看这900条数据怎么样,没有问题吧,好,那这样的话,数据就已经我们大概这个爬虫就已经写完了,这就是我们使用分页数据盘旋了,当然使用分页的话,我们这边有一些问题啊,问题是什么呢?就是每一次你看我们每一次返回的时候,在这个位置返回一堆数据,哎,能不能呃,而且呢是呃程序呢,是等到什么呢?是等到你上面这个数据,呃执行完以后呢啊才走到下面这个过程当中,对吧?而且它写入的话啊,写入的话就是上面你你解析完之后掉一次,然后这个返回,也就是说他是把每一页的数据传过去啊,循环一次,它执行一次,循环一次执行一次啊有没有别的好办法啊,可以进行处理或者调整啊,欢迎各位小伙伴呢,发现咱们这个代码中的一些问题啊,欢迎大家啊各去动脑思考好吧,那这样的话,关于分页数据的爬取就给大家讲解这么多,那么后面的过程当中呢,我们会在针对分页数据获取啊,包括像进程线程再给大家去讲一讲啊,那这样的话,基本上大家在爬取的过程当中啊,速度就会快很多啊,那么这里我们先到这里啊好呃,后面的课程再见。
我来说两句