Maison >développement back-end >Tutoriel Python >Utilisez Selenium pour lire les pages Web qui nécessitent une connexion membre
Il est très courant d'utiliser Selenium pour écrire un robot permettant de lire le contenu d'une page Web. Cependant, vous pouvez rencontrer des pages Web qui nécessitent que vous vous connectiez à votre compte avant d'explorer le contenu. Par exemple, bloguer pour télécharger des informations restreintes. books en est un exemple. Vous verrez la fenêtre de discussion suivante :
Étant donné que les cookies seront utilisés pour enregistrer les informations de connexion après la connexion à un compte, afin de lire une telle page Web, nous pouvons d'abord nous connecter manuellement, puis exporter le cookie dans un fichier. Plus tard, lorsque vous utilisez Selenium pour explorer la page Web, ajoutez à nouveau les cookies exportés, réorganisez la page Web et le contenu Web pourra être lu normalement.
Veuillez utiliser Selenium pour ouvrir la page Web que vous souhaitez lire en premier. Voici un blog à titre d'exemple :
>>> from selenium import webdriver >>> driver = webdriver.Edge() >>> driver.get('https://www.books.com.tw')
À ce stade, veuillez vous connecter en tant que membre selon les procédures normales, puis installer le plug-in cookie_editor :
Pensez à revenir sur la page d'accueil du blog et à utiliser le plug-in pour exporter tous les cookies au format JSON :
Il copiera le contenu du cookie dans le presse-papiers, veuillez le coller dans un éditeur de texte et l'archiver vous-même.
Puis fermez Selenium et rouvrez-le :
>>> from selenium import webdriver >>> driver = webdriver.Edge() >>> driver.get('https://www.books.com.tw')
Pour ajouter des cookies, vous devez être sur une page Web du même domaine que le cookie, alors n'oubliez pas d'ouvrir d'abord le blog pour accéder à la page Web. Ensuite, vous pouvez ouvrir le fichier qui stocke le cookie et le charger dans un dictionnaire Python :
>>> import json >>> with open('cookies.json') as f: ... cookies = json.load(f)
Ajoutez les cookies un par un :
>>> for cookie in cookies: ... driver.add_cookie(cookie)
À ce stade, vous devriez voir l'erreur suivante :
Traceback (most recent call last): File "<stdin>", line 3, in <module> File "C:\Users\meebo\code\python\poetry_env\py310\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 670, in add_cookie assert cookie_dict["sameSite"] in ["Strict", "Lax", "None"] AssertionError
En effet, dans les données exportées par l'éditeur de cookies, l'attribut sameSite utilise null pour représenter "no_restriction", ce qui signifie qu'il n'y a aucune restriction et qu'il doit s'agir du même site Web, mais Selenium ne reconnaît que "Strict", "Lax". ", "Aucun" Ces trois restrictions sont donc diagnostiquées comme des erreurs. Nous devons modifier manuellement le fichier JSON et changer toutes les valeurs des attributs SameSiteen "Aucun" (notez qu'il s'agit de chaînes). Veuillez également vérifier que le domaine est pas de suppression du cookie ".books.com." :
[ { "domain": ".books.com.tw", "expirationDate": 1767941747.633402, "hostOnly": false, "httpOnly": false, "name": "_ga_TR763QQ559", "path": "/", "sameSite": null, "secure": false, "session": false, "storeId": null, "value": "GS1.1.1733381542.1.1.1733381747.0.0.0" }, ... { "domain": ".books.com.tw", "expirationDate": 1748933733, "hostOnly": false, "httpOnly": false, "name": "__eoi", "path": "/", "sameSite": "no_restriction", "secure": true, "session": false, "storeId": null, "value": "ID=7f42c4647467b5fb:T=1733381733:RT=1733381733:S=AA-AfjbpJCe1kw2klEX0xW55n9CY" }, ... ]
Après modification, rechargez et ajoutez les cookies et il n'y aura aucune erreur.
Après l'ajout des cookies, l'écran que vous voyez est toujours un écran de non-connecté :
La page doit être actualisée pour que le cookie prenne effet :
>>> driver.refresh()
Ce que vous voyez est la page pour vous connecter en tant que membre :
De cette façon, vous pouvez utiliser le sélénium pour lire les pages qui nécessitent une connexion membre.
La dernière chose à rappeler est que les cookies sont valides. Si vous ne parvenez pas à vous connecter en utilisant le cookie précédemment stocké après un certain temps, suivez simplement les étapes ci-dessus pour obtenir à nouveau le cookie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!