• 안녕하세요! 저는 지금 google api 문서를 보면서 gmail 메일함을 가져오는것을 만들어보고있습니다. 함수중애 build라는 애가 있는데 service = googleapiclient.discovery. build('gmail', 'v1', credentials=credentials) 이런식으로 인증정보를 넣으면 service.users().getProfile(userId='me').execute() 이런식으로 구글 api를    호출할수 있는 리소스를 반환해 줍니다. 이때 인증정보(credentials) 에 access_token, refresh_token을 넣는데 access_token 이 만료된 경우에도 같이 첨부한 refresh_token을 이용해서 함수 내부에서 refresh를 해서구글서버에 요청을 보내 호출가능한 리소스를 반환하는것 같슴니다. 제가 궁금한 포인트는 ( 엑세스토큰의 유효성 검사 + 엑세스토큰 갱신)  에 관한 코드가 build 라는 함수안에 다 들어있어서 유저 입장에서는 ( 엑세스토큰의 유효성 검사 + 엑세스토큰 갱신) 을 신경 안쓰고 유효한 refresh token만 저장했다가 build 함수에 넣어주면 되는것 같은데 그렇게 해도 될까요?제 짧은 생각으로는 google에서 발급하는 access token은 1시간 안에 만료되니까 저장 안하고 그때그때이런식으로 필요할때 쓰는것도 괜찮을거 같습니다.  그리고 만약 access token을 저장할 필요가 있다면 build 함수실행결과 반환된 리소스 로 부터 얻는 방법은 없을까요?api문서, build 함수와 관련된 라이브러리를 몇시간째 찾고있는데 한번 이런식으로 credential을 이용해서 가져온 리소스 service = googleapiclient.discovery. build('gmail', 'v1', credentials=credentials) 로 부터 엑세스 토큰을 얻는 방법은 찾을수가 없습니다. 이게 구글 쪽에서도 엑세스 토큰을 따로 저장할 필요 없기 때문에 그런 방법을 만들어 놓지 않았나.. 추측을 해봤습니다. 아래링크의 문서처럼  https://developers.google.com/identity/protocols/OAuth2WebServer#offlinepost요청을 직접 보내서 access token을 갱신시키는 방법은 알겠는데..한번 build함수 이용해서 리소스를 가져올때 access token 을 갱신한 격인데 이걸 따로 post 요청 보내서 저장하려고 생각을 해보니... 이건 아닌것 같아서 고민이 많습니다..물어볼곳도 없고 횡설수설 글을 남겼는데... 좋은밤되시고 내일 도 좋은하루되세요 ! 
    2020.01.30 23:34:26
    • 0
      답변수
    • 0
      반응수
    • 461
      조회수
    • 0
      투표
  • 안녕하세요! bs4에서 sibling 태그를 추출하는 법 질문입니다. div 가 id가 있는데 계속 동적으로 바뀌는 것인데이 태그는 <table class="schtab" id="cTB00">이렇게 고정이 된 태그 바로 다음에 오도록 되어 있습니다. 여기서 div의 id 값을 추출하려면 bs4에서 어떻게 코딩을 해야 할까요?감사합니다!
    2019.04.26 18:26:39
    • 0
      답변수
    • 0
      반응수
    • 507
      조회수
    • 0
      투표
  • 궁금한게 처음에 이 패키지 모듈을 설치하고 완전 처음 시작할 때 유저네임과 패스워드를 넣는 것을 예시를 본것 같은데 이게 제가 패키지 안에서 사용자 설정하는 건가요 아니면MySQL의 클라우드 서버에 유저를 생성하는 건가요?저번에 완전 초보때 했던 기억이 있는데 이 내용을 지금 구글링을 해봐도 잘 못 찾겠습니다. 가입을 홈페이지에서 하는 그것을 받아서 커맨드에 입력하는건가요?감사합니다
    2019.04.25 23:50:43
    • 1
      답변수
    • 1
      반응수
    • 1.2k
      조회수
    • 0
      투표
  • res = requests.get('https://finance.naver.com/item/coinfo.nhn?code=005930') soup = bs4.BeautifulSoup(res.content,'html.parser')tables_array=soup.find_all('table',{'class' : 'gHead01 all-width'})[0]print(type(tables_array)) #tables_array.prettify()#table0_body=tables_array.find_all("tr")[0]#print(type(table0_body[0])) 웹스크레이핑 초보입니다.1>[0]을 find_all 다음에 안 붙이니 그냥 빈데이터가 나옵니다. 그래서 [0]으로 재무 테이블을 추출하려고 하는데 그러니 선택되는게 없네요html구조는 여러 테이블이 저 페이지에 있고 저 클래스를 가진 테이블도 여러개 있는데 그 안에 tbody> tr> td> span순으로 되어 span의 텍스트 추출을 하고 싶습니다. 2> 1>이 안되면 id로도 찾아야 할까요?3>그리고 처음 tables_array를 prettify하면 왜 안 될까요?
    2019.04.10 12:47:33
    • 1
      답변수
    • 2
      반응수
    • 1.7k
      조회수
    • 1
      투표
  • 책('파이썬을 이용한 웹크롤링과 스크레이핑' )에 첨부된 ch6-1의 myspider.py 입니다.import scrapy class BlogSpider(scrapy.Spider):     # spider의 이름     name = 'blogspider'     # 크롤링을 시작할 URL 리스트     start_urls = ['https://blog.scrapinghub.com']         def parse(self, response):         for url in response.css('ul li a::attr("href")').re('.*/category/.*'):             yield scrapy.Request(response.urljoin(url), self.parse_titles)         def parse_titles(self, response):         for post_title in response.css('div.entries > ul > li a::text').extract():             yield {'title': post_title}
    2019.02.27 21:16:16
    • 1
      답변수
    • 2
      반응수
    • 1.5k
      조회수
    • 1
      투표