>  기사  >  백엔드 개발  >  Python 크롤러는 브라우저 쿠키: browsercookie를 사용합니다.

Python 크롤러는 브라우저 쿠키: browsercookie를 사용합니다.

JUAN
JUAN원래의
2019-02-18 10:47:362886검색


Python을 사용하는 많은 사람들이 웹 크롤러를 작성했을 수도 있습니다. 네트워크 데이터를 자동으로 얻는 것은 참으로 즐거운 일입니다. 그리고 Python이 도움이 됩니다. 우리는 이 즐거움을 아주 잘 달성합니다. 하지만 크롤러는 종종 다양한 로그인 및 인증 장애에 직면하게 되어 답답합니다(웹사이트: 매일 우리 웹사이트를 장악하는 다양한 크롤러를 만나는 것도 매우 답답합니다~). 파충류와 반파충류는 마치 고양이와 쥐의 게임과 같습니다. 한 발이 다른 발보다 높고 두 발이 반복적으로 얽혀 있습니다.

http 프로토콜의 상태 비저장 특성으로 인해 로그인 확인은 쿠키를 전달하여 구현됩니다. 브라우저를 통해 로그인하면 로그인 정보의 쿠키가 브라우저에 저장됩니다. 다음에 웹사이트를 열면 브라우저는 자동으로 저장된 쿠키를 가져옵니다. 쿠키가 만료되지 않는 한, 귀하는 계속해서 웹사이트에 로그인되어 있습니다.

browsercookie 모듈은 브라우저에서 저장된 쿠키를 추출하는 도구입니다. 이는 브라우저의 쿠키를 cookiejar 개체에 로드하여 로그인이 필요한 웹 콘텐츠를 쉽게 다운로드할 수 있게 해주는 매우 유용한 크롤러 도구입니다.

Install

pip install browsercookie

Windows 시스템에서 FireFox 데이터베이스를 로드할 때 내장된 sqlite 모듈에서 오류가 발생합니다. sqlite 버전을 업데이트해야 합니다:
pip install pysqlite

사용 방법

다음은 웹 페이지에서 제목을 추출하는 예입니다. #🎜 🎜#

>>> import re
>>> get_title = lambda html: re.findall(&#39;<title>(.*?)</title>&#39;, html, flags=re.DOTALL)[0].strip()

아래 로그인하지 않고 다운로드한 제목입니다:

>>> import urllib2
>>> url = &#39; 
>>> public_html = urllib2.urlopen(url).read()
>>> get_title(public_html)&#39;Git and Mercurial code management for teams&#39;

다음으로 browsercookie를 사용하여 Bitbucket에 로그인한 FireFox에서 쿠키를 가져온 후 다운로드합니다: #🎜🎜 #
>>> import browsercookie
>>> cj = browsercookie.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)&#39;richardpenman / home &mdash; Bitbucket&#39;

위는 Python2용 코드입니다. Python3을 다시 시도해 보세요.

>>> import urllib.request
>>> public_html = urllib.request.urlopen(url).read()
>>> opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))

제목에 사용자 이름이 표시되어 browsercookie 모듈이 FireFox에서 쿠키를 성공적으로 로드했음을 나타냅니다.

다음은 요청을 사용하는 예입니다. 이번에는 Chrome에서 쿠키를 로드합니다. 물론 Chrome으로 미리 Bitbucket에 로그인해야 합니다.

>>> import requests
>>> cj = browsercookie.chrome()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

If 당신은 그것에 대해 모르거나 신경 쓰지 않습니다. 브라우저에는 필요한 쿠키가 있습니다. 다음을 수행할 수 있습니다:

>>> cj = browsercookie.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)&#39;richardpenman / home &mdash; Bitbucket&#39;

Support

현재 이 모듈은 다음을 지원합니다. 플랫폼:

Chrome: Linux , OSX, Windows

Firefox: Linux, OSX, Windows


현재 이 모듈에서 테스트한 브라우저 버전은 많지 않습니다. 사용 중에 문제가 발생할 수 있습니다. 질문:

https://bitbucket.org/richardpenman/browsercookie/

#🎜 🎜#



위 내용은 Python 크롤러는 브라우저 쿠키: browsercookie를 사용합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.