Python:黑板课爬虫闯关第四关】的更多相关文章

近日发现了[黑板课爬虫闯关]这个神奇的网页,练手爬虫非常的合适 地址:http://www.heibanke.com/lesson/crawler_ex00/ 第一关非常的简单 get 请求网址,在响应的 html 中用正则获取需要在网址后面输入的数字,生成新的 url,继续请求,直到通关. 代码如下: import re import requests import time def main(): url = 'http://www.heibanke.com/lesson/crawler_e…
第四关地址:http://www.heibanke.com/lesson/crawler_ex03/ 一开始看到的时候有点蒙,不知道啥意思,说密码需要找出来但也没说怎么找啊. 别急,随便输了个昵称和密码,提交一下,就能看到密码提示了. 进入到找密码的链接,显示如下: 注意那一行大字,提示网页加载速度很慢,这一关的意图很明显了,就是:多线程. 密码一共100位,这里虽然显示了翻页,但其实每一页显示的位置是随机的,可能会重复,所以并不是一页页翻到最后一页就可以获取到完整的密码了. 所以我们只要开个多…
第五关是最后一关了,至此之后黑板课就没有更新过关卡了. 第五关地址:http://www.heibanke.com/lesson/crawler_ex04/ 可以看到,是在第三关的基础上加了验证码. 验证码识别我们可以通过 tesserocr 来识别,tesserocr 的使用在我的前面两篇博客中有介绍. 在这里,tesserocr 的识别率不是很高,大概只有10%到15%,通过训练,也没能有啥改善,不知道是不是我弄错了,有尝试过的朋友可以给我留言. 代码如下: import re import…
第三关开始才算是进入正题了. 输入网址 http://www.heibanke.com/lesson/crawler_ex02/,直接跳转到了 http://www.heibanke.com/accounts/login/?next=/lesson/crawler_ex02/,显示如下 仔细看一下这个网址,显然,这是一个登陆网址,next参数应该是登录成功后跳转网页的地址.注册登录后,显示第三关: 首先可以肯定的是,必须要先登录,并保持登录状态,否则是爬不过关的.界面提示有两层保护,这应该就是第…
第二关依然是非常的简单 地址:http://www.heibanke.com/lesson/crawler_ex01/ 随便输入昵称呢密码,点击提交,显示如下: 这样看来就很简单了,枚举密码循环 post 请求,获取响应网页的内容,如果有“密码错误”,那就继续. import re import requests import time def main(): url = 'http://www.heibanke.com/lesson/crawler_ex01/' for psd in rang…
这关较第三关难度增加许多,主要多了并发编程 密码一共有100位,分布在13页,每页打开的时间在15秒左右,所以理所当然的想到要用并发,但是后来发现同IP访问间隔时间不能小于8秒,不然会返回404,所以最好是代理+并发. 目前没有做代理,以后有时间在重新写,由于密码位置上随机出现的,所以采集到页数要远远大于13,我把访问间隔控制在8秒,收集完100位密码一共耗时670s import urllib.request as ur import urllib.parse as up import htt…
这是学习python爬虫练习很好的网站,强烈推荐! 地址http://www.heibanke.com/lesson/crawler_ex00/ 第一关猜数字 很简单,直接给出代码 import urllib.request as ur import re url='http://www.heibanke.com/lesson/crawler_ex00/' pat=re.compile(r'<h3>(\D+(\d+)\D*)</h3>') num='' while True: ne…
第三关,先登录,再猜密码,这关难度较第二关大幅增加,要先去注册一个登录账号,然后打开F12,多登录几次,观察headers数据的变化 给出代码,里面注释很详细 import urllib.request as ur import urllib.parse as up import http.cookiejar as hc import re #网站打开时会先生成一个cookies,里面只有csrfmiddlewaretoken值,需要把这个cookies保存下来, #在登录的时候需要验证用到,还…
第二关猜登录密码,需要用到urllib.request和urllib.parse 也很简单,给代码 import urllib.request as ur import urllib.parse as up import re url='http://www.heibanke.com/lesson/crawler_ex01/' pat=re.compile(r'<h3>(.+)</h3>') i=1 while i<=30: values={'username':'fang'…
一,AttributeError: 'NoneType' object has no attribute 'children', 网页'tbody'没有子类 很明显,报错的意思是说tbody下面没有children,说明我们在gethtmltext的时候可能出现了问题,可以用print(r.status.code)测试,发现并不是200,print(r.raise_for_status())返回的值也是None ,其次 gethtmltext返回的也是 error,说明我们并没有成功下载网页源码…