<python> 네이버, 구글 자동검색하는 코드, 블락(?)될 떄
글쓴이: koreaccm / 작성시간: 목, 2012/10/04 - 3:56오후
부끄럽지만;;; 이해를 돕기위해 코드를 바로 적겠습니다.
아래와 같이
네이버나 구글 검색 URI에 매개변수를 더해서
검색자동화를 시켜보려고 합니다.
그런데 네이버든 구글의 통합검색 URI로 해보니 모두 검색차단을 하고 있네요.
이유는 알겠는데, 해결방법을 어디서부터 찾아야할지 모르겠습니다.
API를 통해서만 가능한 것일까요?
아니면 http header 부분에 있어야할 (user-agent, e-tag 등등 이런 값이 없어서 그런걸가요?)
질문이 바보 같더라도 현답 부탁드립니다.
왕뉴비 올림
#-*-encoding: cp949 -*-
import urllib
f = urllib.urlopen("http://search.naver.com/search.naver?query="+"한예슬".encode("utf-8"))
cont = f.read().decode("utf-8")
print cont
Forums:
제 추측에는 user-agent 문제 같아
제 추측에는 user-agent 문제 같아 보이는데요..
피할 수 있을때 즐겨라! http://melotopia.net/b
여러가지가 되어야 하나봅니다. 하나씩 추가하면서
여러가지가 되어야 하나봅니다.
하나씩 추가하면서 살펴볼 수 밖에요.
wget 으로 하나씩 시험해봤는데...
wget 으로 하나씩 시험해봤는데... accept-encoding 에 gzip 이 들어있는 client 만 허용하네요.
헤더에 포함시키시고, 받은 놈은 zlib 으로 풀어서 해석하셔야겠습니다.
정말 감사합니다. 최소한의 실마리를 찾아주셨네요.
정말 감사합니다.
최소한의 실마리를 찾아주셨네요. 제가 실력이 너무 없어서 며칠 걸리겠지만
꼭 테스트 마치는 대로 다시 감사인사드리겠습니다.
감사합니다.
중간 보고 올립니다. 여기까지 해 봤습니다.
#-*- encoding: cp949 -*-
import httplib, urllib, urllib2
import StringIO, gzip
httplib.HTTPConnection.debuglevel = 1
query_args = {'query':'house'}
encoded_args = 'search.naver?'+ urllib.urlencode(query_args)
request = urllib2.Request('http://searchc.naver.com/')
request.add_header('User-agent', 'Mozilla/5.0')
request.add_header('Accept-encoding', 'gzip')
response = urllib2.urlopen(request, encoded_args)
compressedstream = StringIO.StringIO(response.read())
gzipper = gzip.GzipFile(fileobj=compressedstream)
print gzipper.read()
일단 이렇게 했더니 출력되고 있습니다.
문자열 인코딩/디코딩 개념이 제대로 안 서 있어서... 아무리 해봐도 한글은 깨지고 있네요.
그래서 이 결과값이
"네이버 첫화면" 인지 "네이버 검색결과"인지는 아직 모르겠습니다.
처음 질문 올렸을 때보다 장족의 발전입니다. 작은 코멘트 하나로 여기까지 왔습니다.
두 분 모두 감사드립니다
올려주신 내용 그대로 스크립트 만들어서, 아래와 같이
올려주신 내용 그대로 스크립트 만들어서,
아래와 같이 수행했습니다.
한글 문제없이 잘 보이네요.. utf8로 인코딩되어있습니다.
일단 위와 같이 파일로 받으시고
vi 등으로 인코딩 자동 인식해서 열어보시면 잘 보이실듯..
터미널이 인코딩도 주의하시고요.
감사합니다.
감사합니다. qiiiiiiiip님
그런데 저도 이제 확인해보니
기대와는 다른 결과값이 반환되는 것 같습니다.
query에 대한 검색결과가 아니라 그냥 네이버홈이더라구요.
이전에 비슷한 경험이 있어서 공유합니다. 저는 네이버
이전에 비슷한 경험이 있어서 공유합니다.
저는 네이버 이미지 검색을 통해 이미지 경로좀 긁어보려고 했었는데요..
header 에 'Accept' 가 포함되어있어야 검색결과가 나왔었습니다.
python3에서 동작했습니다.
댓글 달기