黑板课爬虫闯关 - 第二关

第二关比较简单,只是在密码上一个一个循环即可,直接上代码,注意在传输数据时用到的请求方法是POST,其他的都比较基础,同样给出两种版本,可以参考

image.png

one.py

import re
import requests



if __name__ == '__main__':

    data = {'username': 'test'}

    url = 'http://www.heibanke.com/lesson/crawler_ex01/'

    for num in range(1, 31):
        data['password'] = num
        print(data)
        html = requests.post(url,data).content.decode('utf-8')
        result = re.findall('您输入的密码错误, 请重新输入', html)
        if result:
            print("错误")
        else:
            print('闯关成功,下一关网址是:http://www.heibanke.com' + re.findall('<a href="(.*?)" class', html)[0])
            break

two.py

import re
import requests
import time

def main():
    url = 'http://www.heibanke.com/lesson/crawler_ex01/'
    for psd in range(30):
        print(f'test password {psd}')
        r = requests.post(url, data={'username': 'test', 'password': psd})
        html = r.text
        if '密码错误' not in html:
            m = re.search('(?<=\<h3\>).*?(?=\</h3\>)', html)
            print(m.group())
            m = re.search('(\<).*?href="([^"]*?)".*?(\>下一关\</a\>)', html)
            print(f'下一关 http://www.heibanke.com{m.group(2)}')
            return
        else:
            time.sleep(1)


if __name__ == '__main__':
    main()
  • 更多代码详情参考我的Github
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,666评论 4 16
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,037评论 3 119
  • Kin68黄色电力的星星 祈祷文我为了美化而启动连接着艺术我标志着优雅储存的力量透过服务的电力调性我被自由意志的力...
    小猫吃花生阅读 4,306评论 0 0
  • 坚持星球——早读卡|早课卡|微课卡|晚讲卡 早读卡 《红尘》(网络美文) 欲相守,难相望,人各天涯愁断肠 爱易逝,...
    尚武三宝阅读 1,072评论 0 0