1. 程式人生 > >為什麽要模擬表單提交

為什麽要模擬表單提交

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)

這兩個表單的提交都是在沒有驗證碼的情況下實現的。但是現實中,每個網站都為了防止機器提交表單,都有相應的驗證碼。

為什麽要模擬表單提交