Packtpub 에서 매일 무료로 책을 배포하고 있습니다. 이를 매일 받아오기가 갑자기 귀찮아져서 파이썬이라는 언어를 사용해서 간단하게 만들어 보고 싶었습니다. 웹상에 소스들에 대한 정보가 많이 있다는 것을 알고 python3로 작성을 해 보고 싶었습니다. 여러가지 소스들을 봤는데, 이상하게 저는 잘 작동이 되지 않더라구요. github.com 에 올라와 있는 소스는 장황하게 설명이 되어 있어서 입문자인 저에게는 버거웠습니다. 그래서 만들어 보았습니다.
1.무료책을 구매하는 링크를 가져오기
header = {'User-Agent': 'Mozilla/5.0'}
r = requests.post(authentication_url, headers=header)
r.encoding = 'utf-8'
bs4_packt = BeautifulSoup(r.text, "html.parser")
getBook_url = base_url + str(bs4_packt.find('a', attrs={'class': 'twelve-days-claim'})['href'])
getBook_url 로 구매하는 책의 링크를 받아온다.
2. Cookie를 저장하기
cj = http.cookiejar.LWPCookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
urllib.request.install_opener(opener)
http.cookiejar 를 이용해서 cookie 저장소를 만들고, opener 를 통해서 쿠키를 자유롭게 이용하면서 이동을 할 수가 있습니다.
3. 정보입력 하기
value = {
'op': 'Login',
'email': email,
'password': password,
'form_id':'packt_user_login_form'
}
data = urllib.parse.urlencode(value).encode("utf-8")
로그인 할 데이터를 relencode(value).encode(“utf-8”) 를 합니다. 다른 블로그들을 찾아보니 python3 에서는 utf-8 로 encode 를 해서 이용해야 한다고 합니다. 아직 확인할 방법이 없습니다.
4. 로그인하기
conn = opener.open(authentication_url, data)
opener func(url, data) 를 이용해서 로그인을 할 수 있습니다.
5. 로그인 한 상태로 다른 GET 방식으로 이동하기
conn = opener.open(getBook_url)
같은 명령어로 주소만 적어주면 알아서 GET 방식으로 이동합니다.
댓글 없음:
댓글 쓰기