일부 웹 스크래핑 작업을 위해 파이썬을 사용하여 웹 페이지를 다운로드하고 싶습니다. 문제는 웹 사이트에서 쿠키를 사용하도록 설정해야하며 그렇지 않으면 다른 버전의 페이지를 제공한다는 것입니다. 문제를 해결하는 솔루션을 구현했지만 저의 의견으로는 비효율적입니다. 그것을 개선하기 위해 당신의 도움이 필요합니다!파이썬에서 쿠키 사용 페이지 가져 오기
import requests
import cookielib
cj = cookielib.CookieJar()
user_agent = {'User-agent': 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)'}
#first request to get the cookies
requests.get('https://ccirecruit.cox.com/psc/RECRUIT/EMPLOYEE/HRMS/c/HRS_HRAM.HRS_CE.GBL?JobOpeningId=42845&SiteId=1&Page=HRS_CE_JOB_DTL&PostingSeq=1&',headers=user_agent, timeout=2, cookies = cj)
# second request reusing cookies served first time
r = requests.get('https://ccirecruit.cox.com/psc/RECRUIT/EMPLOYEE/HRMS/c/HRS_HRAM.HRS_CE.GBL?JobOpeningId=42845&SiteId=1&Page=HRS_CE_JOB_DTL&PostingSeq=1&',headers=user_agent, timeout=2, cookies = cj)
html_text = r.text
는 기본적으로, 나는 CookieJar
객체를 생성 한 후 같은 URL에 대한 두 개의 연속 된 요청을 보낼 : 지금 그것을 통해 이동하는 방법
이입니다. 처음으로 나에게 나쁜 페이지를 제공하지만 보상으로 쿠키가 제공됩니다. 두 번째 요청은이 쿠키를 재사용하고 올바른 페이지를 얻습니다.
질문 : 하나의 요청을 사용하고 여전히 올바른 쿠키 사용 버전을 얻을 수 있습니까?
트래픽을 최소화하기 위해 GET
대신 처음으로 HEAD
요청을 보내려고했습니다.이 경우 쿠키는 제공되지 않습니다. 그것으로 인터넷 검색도 나에게 대답을주지 않았다. 그래서 효율적으로 만드는 방법을 이해하는 것은 흥미 롭습니다! 어떤 아이디어?
요청에서 시작하는'CookieJar'로 수동 작업 할 필요가 없습니다. 0.6.0 http://kennethreitz.com/requests-v060-released.html#dict-cookies – yonilevy
그래, @yonilevy 좋은 캐치! 그런 식으로 사용할 것입니다. – Nik
링크가 끊어졌습니다 @yonilevy – goldisfine