> 백엔드 개발 > 파이썬 튜토리얼 > Selenium을 사용하여 회원 로그인이 필요한 웹 페이지 읽기

Selenium을 사용하여 회원 로그인이 필요한 웹 페이지 읽기

DDD
풀어 주다: 2024-12-08 10:22:15
원래의
724명이 탐색했습니다.

웹 페이지 콘텐츠를 읽기 위한 크롤러를 작성하려면 셀레늄을 사용하는 것이 매우 일반적인 요구 사항입니다. 그러나 콘텐츠를 크롤링하기 전에 계정에 로그인해야 하는 웹 페이지가 있을 수 있습니다. books가 그 예입니다. 다음 채팅 창이 표시됩니다.

使用 selenium 讀取需要登入會員的網頁

쿠키는 계정 로그인 후 로그인 정보를 기록하는 데 사용되므로, 이러한 웹페이지를 읽기 위해서는 먼저 수동으로 로그인한 후 쿠키를 파일로 내보낼 수 있습니다. 나중에 Selenium을 사용하여 웹페이지를 크롤링할 때 내보낸 쿠키를 다시 추가하고 웹페이지를 재구성하면 웹 콘텐츠를 정상적으로 읽을 수 있습니다.

쿠키 내보내기

먼저 읽고 싶은 웹페이지를 열려면 셀레늄을 사용하세요. 다음은 블로그 예입니다.

>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get('https://www.books.com.tw')
로그인 후 복사
로그인 후 복사

이때 일반적인 절차에 따라 회원으로 로그인하신 후, cookie_editor 플러그인을 설치해주세요:

使用 selenium 讀取需要登入會員的網頁

블로그 홈페이지로 다시 전환하고 플러그인을 사용하여 모든 쿠키를 JSON 형식으로 내보내는 것을 잊지 마세요.

使用 selenium 讀取需要登入會員的網頁

쿠키 내용이 클립보드에 복사됩니다. 텍스트 편집기에 붙여넣고 직접 보관해 주세요.

쿠키 다시 추가

그런 다음 셀레늄을 닫았다가 다시 엽니다.

>>> from selenium import webdriver
>>> driver = webdriver.Edge()
>>> driver.get('https://www.books.com.tw')
로그인 후 복사
로그인 후 복사

쿠키를 추가하려면 쿠키와 동일한 도메인의 웹페이지에 있어야 하므로 먼저 블로그를 열어 웹페이지에 접속해야 합니다. 그런 다음 쿠키를 저장하는 파일을 열고 Python 사전에 로드할 수 있습니다.

>>> 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 "<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
로그인 후 복사

쿠키 편집기에서 내보낸 데이터에서 sameSite 속성이 null을 사용하여 "no_restriction"을 나타내기 때문입니다. 이는 제한이 없고 동일한 웹사이트여야 하지만 Selenium은 "Strict", "Lax"만 인식한다는 의미입니다. ", "None" 따라서 이 세 가지 제한 사항은 오류로 진단됩니다. JSON 파일을 수동으로 수정하고 모든 sameSite 속성 값을 "None"으로 변경해야 합니다(문자열이라는 점에 유의하세요). 또한 도메인이 ".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"
    },
    ...
]
로그인 후 복사

수정 후 쿠키를 다시 로드하고 추가하면 오류가 발생하지 않습니다.

쿠키가 적용되도록 웹페이지를 새로 고치세요.

쿠키를 추가한 후에도 표시되는 화면은 여전히 ​​로그인되지 않은 화면입니다.

使用 selenium 讀取需要登入會員的網頁

쿠키를 적용하려면 페이지를 새로 고쳐야 합니다.

>>> driver.refresh()
로그인 후 복사

회원 로그인 페이지가 보입니다.

使用 selenium 讀取需要登入會員的網頁

이런 방법으로 Selenium을 사용하여 회원 로그인이 필요한 페이지를 읽을 수 있습니다.

마지막으로 알려드릴 점은 쿠키가 유효하다는 점입니다. 일정 시간이 지난 후에도 이전에 저장된 쿠키를 사용하여 로그인할 수 없는 경우 위 단계에 따라 쿠키를 다시 얻으세요.

위 내용은 Selenium을 사용하여 회원 로그인이 필요한 웹 페이지 읽기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿