爬虫闯关 第二关

题目

题目地址访问http://www.heibanke.com/lesson/crawler_ex01/,如图:

猜数字

使用requests实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=utf-8
import requests

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

playload = {'username': 'liuhaha', 'password': '1'}

for i in range(31):
playload['password'] = i
print(u'传入参数为:' + str(playload))

r = requests.post(url, data=playload)

if u"成功" in r.text:
print(u'闯关成功!')
break

运行结果

使用selenium实现

环境:Firefox58,Chrome64。

在刚开始使用Firefox调用WebElementsubmit()方法后,发现submit()方法没有等到页面重新加载完毕就返回,这就导致我们在查找页面元素时无法找到我们想要的东西。而调用提交按钮的click()方法就一切正常。

Chrome浏览器需要安装ChromeDriver - WebDriver for Chrome,下载解压后,配置到环境变量中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# coding=utf-8

from selenium import webdriver

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

# browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser.get(url)

for i in range(31):
username = browser.find_element_by_name('username')
username.clear()
username.send_keys('liuhaha')

password = browser.find_element_by_id("id_password")
password.clear()
password.send_keys(i)
# FireFox下异步,Chrome下同步,submit方法会等待页面加载完成后返回
# password.submit()

# 两种浏览器下click()方法都会等到加载完成后返回
browser.find_element_by_id('id_submit').click()

returnText = browser.find_element_by_tag_name('h3')
print(returnText.text + ', password ' + str(i))
if u"成功" in returnText.text:
break
browser.back()

browser.quit()

运行结果

hoxis wechat
一个脱离了高级趣味的程序员,关注回复1024有惊喜~
赞赏一杯咖啡
  • 本文作者: hoxis | 微信公众号【不正经程序员】
  • 本文链接: https://hoxis.github.io/爬虫闯关第二关.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!
  • 并保留本声明和上方二维码。感谢您的阅读和支持!
0%