웹 페이지 콘텐츠를 읽기 위한 크롤러를 작성하려면 셀레늄을 사용하는 것이 매우 일반적인 요구 사항입니다. 그러나 콘텐츠를 크롤링하기 전에 계정에 로그인해야 하는 웹 페이지가 있을 수 있습니다. books가 그 예입니다. 다음 채팅 창이 표시됩니다.
쿠키는 계정 로그인 후 로그인 정보를 기록하는 데 사용되므로, 이러한 웹페이지를 읽기 위해서는 먼저 수동으로 로그인한 후 쿠키를 파일로 내보낼 수 있습니다. 나중에 Selenium을 사용하여 웹페이지를 크롤링할 때 내보낸 쿠키를 다시 추가하고 웹페이지를 재구성하면 웹 콘텐츠를 정상적으로 읽을 수 있습니다.
먼저 읽고 싶은 웹페이지를 열려면 셀레늄을 사용하세요. 다음은 블로그 예입니다.
>>> 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')
쿠키를 추가하려면 쿠키와 동일한 도메인의 웹페이지에 있어야 하므로 먼저 블로그를 열어 웹페이지에 접속해야 합니다. 그런 다음 쿠키를 저장하는 파일을 열고 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" }, ... ]
수정 후 쿠키를 다시 로드하고 추가하면 오류가 발생하지 않습니다.
쿠키를 추가한 후에도 표시되는 화면은 여전히 로그인되지 않은 화면입니다.
쿠키를 적용하려면 페이지를 새로 고쳐야 합니다.
>>> driver.refresh()
회원 로그인 페이지가 보입니다.
이런 방법으로 Selenium을 사용하여 회원 로그인이 필요한 페이지를 읽을 수 있습니다.
마지막으로 알려드릴 점은 쿠키가 유효하다는 점입니다. 일정 시간이 지난 후에도 이전에 저장된 쿠키를 사용하여 로그인할 수 없는 경우 위 단계에 따라 쿠키를 다시 얻으세요.
위 내용은 Selenium을 사용하여 회원 로그인이 필요한 웹 페이지 읽기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!