Página principal del sitio web | Página de usuario / La página de la que estoy tratando de raspar

Mi código:

import requests
from bs4 import BeautifulSoup as bs

payload = {
    "username": x,
    "password": y
}
s = requests.Session()
res = s.get('https://9anime.to/user/watchlist', data=payload)
soup = bs(res.text, "html.parser")
print(soup.prettify())

Referencia de 403 páginas Esta no es la página que quiero extraer de Cómo sé que falló: (Salida de soup [primeras líneas])

<title>
   Error 403
  </title>
-1
Evan Schwartzentruber 24 may. 2020 a las 23:29

3 respuestas

Resuelto : El action-tag fue user/ajax/login en este caso. Entonces, al agregar eso a la URL principal original del sitio web, no https://9anime.to/user/watchlist sino a https://9anime.to obtienes https://9anime.to/user/ajax/login y esto te da la URL de inicio de sesión.

import requests
from bs4 import BeautifulSoup as bs
url = "https://9anime.to/user/watchlist"
loginurl = "https://9anime.to/user/ajax/login"
payload = {"username":"?????", "password":"?????"}
with requests.Session() as s:
    res = s.post(loginurl, data=payload)
    res = s.get(url)
0
Evan Schwartzentruber 25 may. 2020 a las 03:22

Está intentando realizar una solicitud GET a una URL que requiere iniciar sesión y, por lo tanto, está produciendo un error 403 que significa prohibido. Esto significa que la solicitud no está autenticada para ver el contenido.

Si lo piensa en términos de la URL que está construyendo en su solicitud GET, literalmente expondrá el nombre de usuario (x) y la contraseña (y) dentro de la URL de la siguiente manera:

https://9anime.to/user/watchlist?username=x&password=y

... que por supuesto sería un riesgo para la seguridad.

Sin saber qué acceso específico tiene a este sitio en particular, en principio, debe simular la autenticación con una solicitud POST primero y luego realizar la solicitud GET en esa página después. Una respuesta exitosa devolvería un código de estado 200 ('OK') y luego estaría en condiciones de usar BeautifulSoup para analizar el contenido y orientar su parte deseada de ese contenido entre las etiquetas HTML relevantes.

2
Wayne Lambert 24 may. 2020 a las 20:58

Sugiero, para comenzar, dar la dirección de la página de inicio de sesión y conectarse. Entonces haces un

input('Enter something')

Para permitirle pausar el tiempo de conexión (debe presionar la tecla ENTER en el terminal para continuar el proceso una vez conectado y listo).

1
Christopher 24 may. 2020 a las 20:40