Quiero escribir un programa en Python para iniciar sesión en el sitio web en lotes y, después de iniciar sesión, especificar una URL para determinar si la página web es lo que quiero y luego colocar mi información de inicio de sesión en mi sitio web.
Extraer los datos requeridos para iniciar sesión
Realizar un inicio de sesión en el sitio web
Obtener los datos requeridos
En Para este tutorial, utilicé los siguientes paquetes (que se encuentran en requisitos.txt):
solicitudes
lxml
Paso 1: Investiga el sitio web
Abra la página de inicio de sesión
Vaya a la siguiente página "". Verá la página que se muestra a continuación (si ya ha iniciado sesión, cierre la sesión)
Mire detenidamente los detalles que necesitamos extraer para iniciar sesión
En esta sección, A Se creará un diccionario para contener los detalles utilizados para realizar el inicio de sesión:
1. Haga clic derecho en el campo "Nombre de usuario o correo electrónico" y seleccione "Ver elemento". Usaremos el valor del cuadro de entrada con el atributo "nombre" como "nombre de usuario". Nombre de usuario" sería el valor clave y nuestro nombre de usuario/correo electrónico sería el valor correspondiente (en otros sitios podrían ser "correo electrónico", "nombre_usuario", "iniciar sesión", etc.). p>
2. Derecha -Haga clic en el campo "Contraseña" y seleccione "Ver elemento". En el script, debemos usar el atributo "nombre" como valor del cuadro de entrada "Contraseña". "Contraseña" será el valor clave del diccionario. Y la contraseña que ingresemos será el valor correspondiente (en otros sitios web, el valor clave puede ser "contraseña de usuario", "contraseña de inicio de sesión", "contraseña", etc.).
3. En la página del código fuente, busque un token de entrada oculto llamado "csrfmiddlewaretoken". csrfmiddlewaretoken" será el valor clave y el valor correspondiente será el valor de entrada oculto (en otros sitios, el valor podría ser un token de entrada oculto llamado "csrftoken", "authenticationtoken", "authenticationtoken", etc.) "authenticationtoken" " ). Por ejemplo, "Vy00PE3Ra6aISwKBrPn72SFml00IcUV8".
Finalmente, obtendremos el siguiente diccionario:
payload = {
"Username":"
"Contraseña":"
" csrfmiddlewaretoken":"
}
Tenga en cuenta que esto es específico de este sitio. Si bien este formulario de inicio de sesión es simple, otros sitios pueden requerir que verifiquemos los registros de solicitudes del navegador y busquemos las claves y valores relevantes que deben usarse en el paso de inicio de sesión. p >
Paso 2: Ejecutar inicio de sesión en el sitio web
Para este script, solo necesitamos importar lo siguiente:
solicitudes de importación
desde lxml import html
p>Primero, crearemos el objeto de sesión. Este objeto nos permitirá guardar todas las solicitudes de sesión de inicio de sesión
session_requests = request.session()
login_url = ""
resultado = session_requests.get(login_url)
árbol = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value"))[0]
A continuación, realizamos la fase de inicio de sesión. En esta fase, Enviaremos una solicitud POST a la URL de inicio de sesión y usaremos la carga útil creada en el paso anterior como datos. También puede usar un encabezado para la solicitud y agregar una clave de referencia en el encabezado
resultado. .post(
login_url,
datos = carga útil,
encabezados = dict(referer=login_url)
) p>
Paso tres: Obtener contenido
Ahora que hemos iniciado sesión correctamente, realizaremos la búsqueda real desde la página del panel de Bitbucket
url = ''
.resultado = session_requests.get(
url,
headers = dict(referer = url)
)
Para Para Para probar la funcionalidad anterior, tomamos el contenido de la página del panel de bitbucket. Usaremos nuevamente xpath para encontrar el elemento de destino, borraremos el texto y los espacios en la nueva línea e imprimiremos el resultado. estar en la cuenta de bitbucket/lista de elementos
tree = html.fromstring(result.content)
bucket_elems = tree.findall(". //span[@class=). 'repo-name'] /")
bucket_names = [bucket.text_content.replace("n", "").strip() para depósito en bucket_elems]
imprimir nombres de depósito
También puede verificar los resultados de estas solicitudes verificando el código de estado devuelto por cada solicitud. No siempre le permite saber si la fase de inicio de sesión fue exitosa, pero puede usarse como indicador de verificación. .
Por ejemplo:
result.ok # nos dirá si la última solicitud fue exitosa
result.status_code # devolverá el estado de la última solicitud
Eso es todo.