国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

02_python爬蟲_五種方法通過黑板客第二關

2019-11-06 06:49:45
字體:
來源:轉載
供稿:網友

黑板客第二關網址是 http://www.heibanke.com/lesson/crawler_ex01/ 

第二關的頁面如下:

即要求用戶輸入用戶名和密碼,然后闖關成功

用戶名沒有規則,可以任意輸入,而密碼是一個30以內的數字,并不是真正我們注冊的用戶名和密碼組合

因此,這就需要我們去依次嘗試輸入30以內的數字作為密碼

這種方式需要我們向網站做出一個互動:自動提交表單

第一種方法

通過urllib 提交內容

#!/usr/bin/python# coding:utf-8import urllibimport reimport sysreload(sys)sys.setdefaultencoding('utf-8') data={'username':'qiqiyingse'}url='http://www.heibanke.com/lesson/crawler_ex01/' for num in xrange(1,31):	data['passWord']=num	post_data=urllib.urlencode(data)	PRint post_data	response=urllib.urlopen(url,post_data)	html=response.read()	result=re.findall('密碼錯誤',html)	if not result:		print '闖關成功,下一關網址是:http://www.heibanke.com'+re.findall(r'<a href="(.*?)" class',html)[0]		break 

所耗時長:

闖關成功,下一關網址是:http://www.heibanke.com/lesson/crawler_ex02/run time is  0:00:12.546250

第二種方法

urllib2 的方式,用urllib 打包數據

#!/usr/bin/python# coding:utf-8import urllib2import reimport urllibimport datetimebegin_time=datetime.datetime.now()data={'username':'qiqiyingse'}url='http://www.heibanke.com/lesson/crawler_ex01/' for num in range(1,31):	data['password']=num	post_data=urllib.urlencode(data)	print post_data	response=urllib2.urlopen(url,post_data)	html=response.read()	result=re.findall('密碼錯誤',html)	if not result:		print '闖關成功,下一關網址是:http://www.heibanke.com'+re.findall(r'<a href="(.*?)" class',html)[0]		print 'run time is ',datetime.datetime.now()-begin_time		break 

所耗時長:

闖關成功,下一關網址是:http://www.heibanke.com/lesson/crawler_ex02/run time is  0:00:10.163122

這種方法的數據打包也可以用下面這兩句代碼

post_data=urllib.urlencode(data)request=urllib2.Request(url,post_data)response=urllib2.urlopen(request)只是里面多了一個urllib2里面的Request 方法來進行打包

第三種方法

使用request的post方法來提交數據

#!/usr/bin/python# coding:utf-8import requestsimport reimport datetimeimport sysreload(sys)sys.setdefaultencoding('utf-8')begin_time=datetime.datetime.now()url = 'http://www.heibanke.com/lesson/crawler_ex01/'payload = {'username': 'test', 'password': 0}for n in range(30):	payload['password'] = n	content = requests.post(url, payload).text	pattern = r'<h3>(.*)</h3>'	result = re.findall(pattern, content)	print "try enter ",n,result[0]	if u"錯誤" not in result[0]:		print result[0]+'/n下一關網址是:http://www.heibanke.com'+re.findall(r'<a href="(.*?)" class',content)[0]		print 'run time is ',datetime.datetime.now()-begin_time		break所耗費時長

下一關網址是:http://www.heibanke.com/lesson/crawler_ex02/run time is  0:00:09.232878

第四種方法

使用webdriver的方式,相當于直接通過頁面輸入,頁面點擊的方式


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 珠海市| 江永县| 永福县| 阿克| 江油市| 梁河县| 邢台市| 历史| 舟曲县| 高台县| 永福县| 襄汾县| 中阳县| 多伦县| 定西市| 眉山市| 全南县| 哈巴河县| 安康市| 宁海县| 象州县| 景谷| 武陟县| 阳谷县| 澄迈县| 山东省| 文山县| 肇东市| 大冶市| 茌平县| 仁寿县| 怀来县| 泗水县| 定日县| 新泰市| 府谷县| 进贤县| 太谷县| 翁源县| 辽宁省| 惠州市|