Login to website using python requests

前端 未结 4 1201
孤独总比滥情好
孤独总比滥情好 2020-12-13 03:03

I\'m trying to login to https://www.voxbeam.com/login using requests to scrape data. I\'m a python beginner and I have done mostly tutorials, and some web scraping on my own

4条回答
  •  情书的邮戳
    2020-12-13 03:31

    As said above, you should send values of all fields of form. Those can be find in the Web inspector of browser. This form send 2 addition hidden values:

    url = "https://www.voxbeam.com//login"
    data = {'userName':'xxxxxxxxx','password':'yyyyyyyyy','challenge':'zzzzzzzzz','hash':''}  
    # note that in email have encoded '@' like uuuuuuu%40gmail.com      
    
    session = requests.Session()
    r = session.post(url, headers=headers, data=data)
    

    Also, many sites have protection from a bot like hidden form fields, js, send encoded values, etc. As variants you could:

    1) Use a cookies from manual login:

    url = "https://www.voxbeam.com"
    headers = {'user-agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36"}
    cookies = {'PHPSESSID':'zzzzzzzzzzzzzzz', 'loggedIn':'yes'}
    
    s = requests.Session()
    r = s.post(url, headers=headers, cookies=cookies)
    

    2) Use module Selenium:

    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    
    url = "https://www.voxbeam.com//login"
    driver = webdriver.Firefox()
    driver.get(url)
    
    u = driver.find_element_by_name('userName')
    u.send_keys('xxxxxxxxx')
    p = driver.find_element_by_name('password')
    p.send_keys('yyyyyyyyy')
    p.send_keys(Keys.RETURN)
    

提交回复
热议问题