為什麽要模擬表單提交
阿新 • • 發佈:2018-06-03
stat form 獲取對象 one bob quest install select __name__
為什麽要模擬表單提交
現在許多的網站都是需要登錄驗證後才能訪問該網站的頁面,爬蟲(網絡機器人【spider】)該怎麽獲取這些頁面呢!是的,爬蟲也是需要登錄的,才能獲取到後面的頁面。
爬蟲怎麽模擬表單登錄
- 復雜的辦法,先爬取登錄界面,得到登錄表單需要的數據
import requests
from bs4 import BeaytifulSoup
def main():
resp = request.get(‘https://github.com/login‘)
# 判斷服務器返回的狀態碼是不是200(表示成功)
if resp .status_code != 200:
return
# 獲取返回對象裏的cookies
cookies = resp.cookies.get_dict(www.dejiaylsmile.cn)
soup = BeautifulSoup(resp.text,‘lxml‘)
utf_8_value = soup.select_one(‘form input[name=utf8]‘).attrs[‘value‘]
# 得到csrf
authenticity_token = authenticity_token = soup.select_one(‘form input[name=authenticity_token]‘).attrs[‘value‘]
# 把提交表單的數據放在字典
data = {
‘utf8‘: utf8_value,
‘authenticity_token‘:www.wmyl11.com m authenticity_token,
‘login‘: ‘[email protected]‘,
‘password‘: ‘lijin136283‘,
}
# 發出提交表單的post請求
resp = requests.post(‘http://github.com/session‘, data=data,
cookies=cookies)
if __name__ == ‘__main__‘:
main()
- 簡單的方法,直接用python模塊(robobrowser)
pip install robobrowser # 安裝模塊
- 1
import requests
import robobrowser
def mian():
# 獲取對象
b = robobrowser.RoboBrowser(www.leyouzaixian2.com parser=‘lxml‘)
# 打開表單的網址
b.open(‘https://www.yingka178.com /login‘)
# 獲得要提交的哪個表單
f = b.get_form(action=‘/session‘)
# 登錄的賬號
f[‘login‘].value = ‘[email protected]‘
# 登錄的密碼
f[‘password‘].value = ‘lijin‘
# 提交表單
b.submit_form(f)
# 獲取提交成功後主頁的數據
for a_tag in b.select(‘a[href]‘):
print(a_tag.attrs[‘href‘])
if __name__ == ‘__main__‘:
main(www.dfzx157.com)
這兩個表單的提交都是在沒有驗證碼的情況下實現的。但是現實中,每個網站都為了防止機器提交表單,都有相應的驗證碼。
為什麽要模擬表單提交