-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
urllib을 활용한 데이터 추출하기(2) 과제 질문한번더 합니다
19.01.23 23:18 작성 조회수 90
0
한번더 질문 드립니다.
import sys
import io
import urllib.request as dw
from urllib.parse import urlencode
sys.stdout=io.TextIOWrapper(sys.stdout.detach(),encoding=’utf-8′)
sys.stderr=io.TextIOWrapper(sys.stderr.detach(),encoding=’utf-8′)
N_bannerUrl1=" https://nv.veta.naver.com/fxshow"
value1={
‘su’:’SU10079′
}
value2={
‘calp’:’1′
}
value3={
‘nrefreshx’:’1′
}
param1=urlencode(value1)
param2=urlencode(value2)
param3=urlencode(value3)
Naver_bannerUrl1=N_bannerUrl1+’?’+param1+’&’+param2+’&’+param3
print(Naver_bannerUrl1)
savePath1="d:/Web crowling study/section2/naver_banner1.jpg"
reqData1=dw.urlopen(Naver_bannerUrl1).read()
with open(savePath1,’wb’) as savefile1:
savefile1.write(reqData1)
Naver_bannerUrl2=" https://ssl.pstatic.net/tveta/libs/1226/1226129/0744cf34170d945cfd3f_20190118132726901.jpg"
savePath2="d:/Web crowling study/section2/naver_banner2.jpg"
reqData2=dw.urlopen(N_bannerUrl2).read()
with open(savePath2,’wb’) as savefile2:
savefile2.write(reqData2)
print("다운로드완료!")
서버측에서 변경되는 타이밍에 가져와서 빈 이미지 파일이 생성되는것 같다고 하셨는데
위 코드에서 네이버 왼쪽 베너 즉 Naver_bannerUrl1 경우에 직접jpg Url이 아닌 상위 url을 이용해서
왼쪽베너가 갱신되면 , 코드를 실행하였을 때 갱신된 이미지를 저장할 것이라고 생각했습니다.
왼쪽 베너는 브라우저를 보고있을 때 갱신 속도가 아주 느려서 같은 이미지가 왼쪽 베너에 오래동안 유지됩니다.
이럴경우는 우연히 서버측에서 변경되는 타이밍에 가져와서 그런것은 아니지 않나요?
이미지가 변경되는 타이밍에 저장이되서 그렇다면 이미지 갱신주기가 매우 짧아서 그 주기와 저장시기가 맞아야
하는것이라고 생각이들어서 다시 여쭤봅니다.
또 섹션 2에서 selenium 수업이 없는것 같습니다. beautifulsoup 강의는 있습니다.
답변을 작성해보세요.
0
좋은사람
지식공유자2019.01.24
답변드립니다.
현재 보내주신 코드 전체를 제가 리뷰 한 후 답변을 드릴 수 없는 관계로 정확한 소스코드를 리뷰하지는 않았습니다.
보통은 타이밍 문제에서 빈 파일이 생성되는 경우는 많습니다.
그리고 받고자 하는 이미지 2장 full url 정보를 복잡하게 작성하는 것 보다는
imgUrl1
imgUrl2
선언해서
형식으로 각각 테스트 해보시기 바랍니다.
또한 실제 브라우저가 아닌 경우에는
서버측에서 1. 브라우저에 내장되어 있는 pdf 뷰어가 있는지 여부
- fake-header 정보를 가졌는지 여부
를 체크해서 부가 정보를 Response 하지 않는 방법도 취하고 있습니다
저라면 이미지 url을 가지고 base64 구문으로 print문으로 출력해보고 단위테스트를 진행할 것같습니다.
https://stackoverflow.com/questions/43926563/how-to-read-bytes-from-a-image-url-jpeg-and-encode-in-base64-on-python-2-7?rq=1
섹션3에서 Selenium 수업이 있습니다.
아울러, 답변이 늦어질 수 있으니 급한 질문은 쪽지로 보내주세요.
답변 1