iniciar sesión en el sitio web utilizando las solicitudes

He intentado dos métodos completamente diferentes. Pero todavía no puedo obtener los datos que solo están presentes después de iniciar sesión.

He intentado hacer una utilizando solicitudes, pero xpath devuelve una solicitud de importación nula desde lxml import html

USERNAME = "xxx" PASSWORD = "xxx" LOGIN_URL = "http://www.reginaandrew.com/customer/account/loginPost/referer/aHR0cDovL3d3dy5yZWdpbmFhbmRyZXcuY29tLz9fX19TSUQ9VQ,,/" URL = "http://www.reginaandrew.com/gold-leaf-glass-top-table" def main(): FormKeyTxt = "" session_requests = requests.session() # Get login csrf token result = session_requests.get(LOGIN_URL) tree = html.fromstring(result.text) # Create payload formKey = str((tree.xpath("//*[ @ id = 'login-form'] / input / @ value"))) FormKeyTxt = "".join(formKey) #print(FormKeyTxt.replace("['","").replace("']","")) payload = { "login[username]": USERNAME, "login[password]": PASSWORD, "form_key": FormKeyTxt, "persistent_remember_me": "checked" } # Perform login result = session_requests.post(LOGIN_URL, data=payload) # Scrape url result = session_requests.get(URL, data=payload) tree = html.fromstring(result.content) bucket_names = tree.xpath("//span[contains(@class, 'in-stock')]/text()") print(bucket_names) print(result) print(result.status_code) if __name__ == '__main__': main() 

He intentado otra utilizando una sopa mecánica, pero todavía devuelve un nulo

 import argparse import mechanicalsoup import urllib.request from bs4 import BeautifulSoup parser = argparse.ArgumentParser(description='Login to GitHub.') parser.add_argument("username") parser.add_argument("password") args = parser.parse_args() browser = mechanicalsoup.Browser() login_page = browser.get("http://www.reginaandrew.com/gold-leaf-glass-top-table") login_form = login_page.soup.select("#login-form")[0] login_form.input({"login[username]": args.username, "login[password]": args.password}) page2 = browser.submit(login_form,login_page.url ) messages = page2.soup.find(class_='in-stock1') if messages: print(messages.text) print(page2.soup.title.text) 

Entiendo mejor la mejor solución, así que me gustaría usarla, pero ¿hay algo que me esté perdiendo? (Estoy seguro que me falta mucho)

Esto deberia hacerlo

 import requests import re url = "http://www.reginaandrew.com/" r = requests.session() rs = r.get(url) cut = re.search(r'', rs.text, re.S|re.I).group() action = re.search(r'action="(.+?)"', cut).group(1) form_key = re.search(r'name="form_key".+?value="(.+?)"', cut).group(1) payload = { "login[username]": "fugees", "login[password]": "nugees", "form_key": form_key, "persistent_remember_me": "on" } rs = r.post(action, data=payload, headers={'Referer':url})