از سلنیوم برای خواندن صفحات وب که نیاز به عضویت دارند استفاده کنید – انجمن DEV

Summarize this content to 400 words in Persian Lang
استفاده از سلنیوم برای خواندن محتوای وب یک الزام بسیار رایج است به عنوان مثال پنجره چت زیر را مشاهده خواهید کرد:
از آنجایی که پس از ورود به حساب کاربری از یک کوکی برای ثبت اطلاعات ورود به سیستم استفاده می شود، برای خواندن چنین صفحه وب، می توانیم ابتدا به صورت دستی وارد شوید و پس از ورود، کوکی را به فایل صادر کنیم. بعداً، هنگام استفاده از سلنیوم برای خزیدن در صفحه وب، کوکی های صادر شده را دوباره اضافه کنید، صفحه وب را سازماندهی مجدد کنید، و محتوای وب را می توان به طور معمول خواند.
صادر کردن کوکی ها
لطفاً ابتدا از سلنیوم برای باز کردن صفحه وبی که میخواهید بخوانید استفاده کنید.
>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get(‘https://www.books.com.tw’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این زمان، لطفاً طبق روال عادی به عنوان عضو وارد شوید و سپس افزونه cookie_editor را نصب کنید:
لطفاً به یاد داشته باشید که به صفحه اصلی وبلاگ برگردید و از این افزونه برای صادر کردن همه کوکیها در قالب JSON استفاده کنید:
محتوای کوکی را در کلیپ بورد کپی می کند، لطفاً آن را در یک ویرایشگر متن قرار دهید و خودتان آن را بایگانی کنید.
کوکی ها را دوباره اضافه کنید
سپس سلنیوم را ببندید و دوباره باز کنید:
>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get(‘https://www.books.com.tw’)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای افزودن یک کوکی، باید در یک صفحه وب در همان دامنه کوکی باشید، بنابراین به یاد داشته باشید که ابتدا وبلاگ را باز کرده و به صفحه وب دسترسی داشته باشید. سپس می توانید فایلی را که کوکی را ذخیره می کند باز کنید و آن را در فرهنگ لغت پایتون بارگذاری کنید:
>>> import json
>>> with open(‘cookies.json’) as f:
… cookies = json.load(f)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
سپس کوکی ها را یکی یکی اضافه کنید:
>>> for cookie in cookies:
… driver.add_cookie(cookie)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این مرحله باید خطای زیر را مشاهده کنید:
Traceback (most recent call last):
File “”, line 3, in
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
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این به این دلیل است که در دادههای صادر شده توسط ویرایشگر کوکی، ویژگی sameSite از null برای نمایش “no_restriction” استفاده میکند، به این معنی که هیچ محدودیتی وجود ندارد و باید همان وبسایت باشد، اما سلنیوم فقط “Strict”، “Lax” را تشخیص میدهد. و “هیچ”، بنابراین به عنوان یک خطا تشخیص داده می شود دامنه حذف کوکی “.books.com.tw” نیست:
[{
“domain”: “.books.com.tw”,
“expirationDate”: 1767941747.633402,
“hostOnly”: false,
“httpOnly”: false,
“name”: “_ga_TR763QQ559”,
“path”: “https://dev.to/”,
“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”: “https://dev.to/”,
“sameSite”: “no_restriction”,
“secure”: true,
“session”: false,
“storeId”: null,
“value”: “ID=7f42c4647467b5fb:T=1733381733:RT=1733381733:S=AA-AfjbpJCe1kw2klEX0xW55n9CY”
},
…
]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پس از اصلاح، کوکی ها را دوباره بارگیری و اضافه کنید و هیچ خطایی وجود نخواهد داشت.
صفحه وب را بازخوانی کنید تا اجازه دهید کوکی ها اعمال شوند
پس از افزودن کوکیها، صفحهای که میبینید همچنان صفحهای است که وارد سیستم نشدهاید:
برای اعمال کوکی، صفحه وب باید به روز شود:
>>> driver.refresh()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
آنچه می بینید صفحه ای برای ورود به عنوان عضو است:
به این ترتیب می توان از سلنیوم برای خواندن صفحاتی که نیاز به ورود اعضا دارند استفاده کرد.
آخرین چیزی که باید یادآوری شود این است که کوکی ها منقضی شده اند اگر پس از مدتی نمی توانید با استفاده از کوکی ذخیره شده قبلی وارد سیستم شوید، فقط باید مراحل بالا را دنبال کنید تا دوباره کوکی را دریافت کنید.
استفاده از سلنیوم برای خواندن محتوای وب یک الزام بسیار رایج است به عنوان مثال پنجره چت زیر را مشاهده خواهید کرد:
از آنجایی که پس از ورود به حساب کاربری از یک کوکی برای ثبت اطلاعات ورود به سیستم استفاده می شود، برای خواندن چنین صفحه وب، می توانیم ابتدا به صورت دستی وارد شوید و پس از ورود، کوکی را به فایل صادر کنیم. بعداً، هنگام استفاده از سلنیوم برای خزیدن در صفحه وب، کوکی های صادر شده را دوباره اضافه کنید، صفحه وب را سازماندهی مجدد کنید، و محتوای وب را می توان به طور معمول خواند.
صادر کردن کوکی ها
لطفاً ابتدا از سلنیوم برای باز کردن صفحه وبی که میخواهید بخوانید استفاده کنید.
>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get('https://www.books.com.tw')
در این زمان، لطفاً طبق روال عادی به عنوان عضو وارد شوید و سپس افزونه cookie_editor را نصب کنید:
لطفاً به یاد داشته باشید که به صفحه اصلی وبلاگ برگردید و از این افزونه برای صادر کردن همه کوکیها در قالب JSON استفاده کنید:
محتوای کوکی را در کلیپ بورد کپی می کند، لطفاً آن را در یک ویرایشگر متن قرار دهید و خودتان آن را بایگانی کنید.
کوکی ها را دوباره اضافه کنید
سپس سلنیوم را ببندید و دوباره باز کنید:
>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get('https://www.books.com.tw')
برای افزودن یک کوکی، باید در یک صفحه وب در همان دامنه کوکی باشید، بنابراین به یاد داشته باشید که ابتدا وبلاگ را باز کرده و به صفحه وب دسترسی داشته باشید. سپس می توانید فایلی را که کوکی را ذخیره می کند باز کنید و آن را در فرهنگ لغت پایتون بارگذاری کنید:
>>> import json
>>> with open('cookies.json') as f:
... cookies = json.load(f)
سپس کوکی ها را یکی یکی اضافه کنید:
>>> for cookie in cookies:
... driver.add_cookie(cookie)
در این مرحله باید خطای زیر را مشاهده کنید:
Traceback (most recent call last):
File "", line 3, in
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
این به این دلیل است که در دادههای صادر شده توسط ویرایشگر کوکی، ویژگی sameSite از null برای نمایش “no_restriction” استفاده میکند، به این معنی که هیچ محدودیتی وجود ندارد و باید همان وبسایت باشد، اما سلنیوم فقط “Strict”، “Lax” را تشخیص میدهد. و “هیچ”، بنابراین به عنوان یک خطا تشخیص داده می شود دامنه حذف کوکی “.books.com.tw” نیست:
[
{
"domain": ".books.com.tw",
"expirationDate": 1767941747.633402,
"hostOnly": false,
"httpOnly": false,
"name": "_ga_TR763QQ559",
"path": "https://dev.to/",
"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": "https://dev.to/",
"sameSite": "no_restriction",
"secure": true,
"session": false,
"storeId": null,
"value": "ID=7f42c4647467b5fb:T=1733381733:RT=1733381733:S=AA-AfjbpJCe1kw2klEX0xW55n9CY"
},
...
]
پس از اصلاح، کوکی ها را دوباره بارگیری و اضافه کنید و هیچ خطایی وجود نخواهد داشت.
صفحه وب را بازخوانی کنید تا اجازه دهید کوکی ها اعمال شوند
پس از افزودن کوکیها، صفحهای که میبینید همچنان صفحهای است که وارد سیستم نشدهاید:
برای اعمال کوکی، صفحه وب باید به روز شود:
>>> driver.refresh()
آنچه می بینید صفحه ای برای ورود به عنوان عضو است:
به این ترتیب می توان از سلنیوم برای خواندن صفحاتی که نیاز به ورود اعضا دارند استفاده کرد.
آخرین چیزی که باید یادآوری شود این است که کوکی ها منقضی شده اند اگر پس از مدتی نمی توانید با استفاده از کوکی ذخیره شده قبلی وارد سیستم شوید، فقط باید مراحل بالا را دنبال کنید تا دوباره کوکی را دریافت کنید.