파이썬3 웹 크롤링 HTTP error 403 발생시 해결방법

반응형

안녕하세요?

 

오늘은 그동안 잘 되던 웹크롤링에서 http error 403 이 발생하여 해결한 내용 기록하겠습니다.

 

urllib . error . HTTPError :   HTTP  Error  403 :  Forbidden

 

에러가 발생한 이유는 mod_security 또는 다른 비슷한 서버 시큐리티가 알려진 사용자 봇을 블록 시키기 때문이라고 합니다.

가이드에 따라,

브라우저 유저 에이전트를 시도해 보았습니다.

 

수정전>

from urllib.request import Request, urlopen

urlTicker = urllib.request.urlopen('https://api.bithumb.com/public/ticker/%s_KRW' % ticker) 
readTicker = urlTicker.read()
jsonTicker = json.loads(readTicker)

<수정후>

from urllib.request import Request, urlopen

urlTicker = 
Request('https://api.bithumb.com/public/ticker/%s_KRW' % ticker, headers={'User-Agent': 'Mozilla/5.0'})
readTicker = urlopen(urlTicker).read()
jsonTicker = json.loads(readTicker)

오~ 역시, 깔끔하게 해결이 되었습니다.

 

다음 블러그를 참조하여 작성하였습니다. 도움에 감사드립니다.

 

m.blog.naver.com/PostView.nhn?blogId=naturelove87&logNo=221908009605&proxyReferer=https:%2F%2Fwww.google.com%2F

 

파이썬3 웹 크롤링 HTTP error 403이 뜰 때 해결하는 방법

파이썬3에서 urllib.request를 사용할 때 HTTP Error 403이 뜰 때 해결하는 방법​다음과 같은 코드를...

blog.naver.com

https://stackoverflow.com/questions/16627227/http-error-403-in-python-3-web-scraping

 

HTTP error 403 in Python 3 Web Scraping

I was trying to scrap a website for practice, but I kept on getting the HTTP Error 403 (does it think I'm a bot)? Here is my code: #import requests import urllib.request from bs4 import Beautiful...

stackoverflow.com

 

반응형

댓글()

코인API 자동매매일지 - 2021.04.05 21:00

카테고리 없음|2021. 4. 5. 21:37
반응형

안녕하세요? 

 

4월 5일 코인 자동매매일지 올립니다.

오늘은 어제 76만원대비 약 8% 증가된 82만원입니다.

 

전체 가상화폐의 거래량과 가격이 많이 오른 영향도 큰것으로 보입니다.

오늘은, 어제 19:00부터 오늘 19:00시까지 25시간 거래내역을 빗썸으로부터 다운받아서

코인의 매수단가 대비 매도단가 차이를 보고, 현재 몇%의 마진을 남기는지 확인을 해봤습니다.

물론, 여기에는 수수료 매수, 매도 각 0.25%인 0.5% 수수료가 포함되어 있음을 감안하셔야 합니다.

 

보통 1%에서 3%까지의 차액 이윤을 남기고 있음을 알 수 있습니다만,

더마이다스터치골드의 경우에는 -7.9%에 손절한 Case도 확인이 됩니다.

매수매도 대상: 일일거래금액 300억 이상

1회 매수 한도금액: 20만원

매도시 최소마진율: 최소 1% ~ 최대 10%

                          (비트코인 가격 증가 및 감소에 따라 자동으로 변환)

오늘 거래가 가장 많이 발생한 아모코인(AMO)의 6시간봉 및 5분봉 차트입니다.

5분봉차트는 최근 12시간만 표시하고 있는데, 최근 12시간이내에는 거래가 없었네요.. 

 

두번째로 오늘 최근 거래가 있었던 비트코인을 보겠습니다.

"B"로 표시된 부분이 buy(매수)부분입니다.

 

확대를 해 볼게요. 7,477만원부근에서 Buy했다는것을 그림으로 확인 가능합니다.

빗썸에서 이 부분을 크게 다시 봐 보겠습니다.

18:20분에 5분봉기준 macd가 0선이하에서 signal선을 교차하면서 상승할때 매수가 되었음을 알수 있죠..

제가 원하던 매수 싯점입니다. 프로그램이 잘 수행되고 있음을 확인할 수 있습니다. ^^

오늘은 여기까지 하겠습니다.

반응형

댓글()

코인API 자동매매일지-2021.04.04

가상화폐|2021. 4. 4. 21:58
반응형

안녕하세요?

3일차 코인 자동매매일지 올립니다.

 

오늘을 현재 추정자산금액은 756000원입니다.

어제와 거의 같습니다.

어제밤 12시경부터 최근 급등에 대한 우려때문인지, 대부분의 가상화폐들이 

하락을 했습니다.

 

저도 오늘 아침에는 8% 이상이 빠졌다가,

오후부터 회복되기 시작하여, 현재는 어제 금액만큼 겨우 회복을 한것 같습니다.

 

자동매매프로그램 화면

 

 

빗썸자산현황 매뉴

.

반응형

댓글()

코인API 자동매매일지-2021.04.03

가상화폐|2021. 4. 3. 09:20
반응형

안녕하세요?

두번째 코인자동매매일지입니다.

요즘 코인거래량이 상당히 증가하면서, 비트코인이 연일 최고가를 경신하고 있습니다.

일부 코인은 하루 만에 가격이 두배가 되기도 하는것 같습니다.

하지만, 저의 프로그램은 이런 폭증과 무관하게 일정수익만을 내면서

천천히 금액이 증가되도록 거래가 조정되는 것 같습니다.

 

오늘은 어제 오후3시경 시점 기준보다 4.56%증가 된것 같습니다.

자동매매프로그램 화면
빗썸 자산현황 메뉴화면

 

반응형

댓글()

코인API 자동매매일지-2021.04.02

가상화폐|2021. 4. 2. 14:13
반응형

안녕하세요?
오늘부터 제가 운영중인 코인 자동매매시스템의 일일 모니터링 결과를 올리도록하겠습니다.

자동매매프로그램 운영환경
1. 사용 API: Bithumb API
2. 사용언어: 파이썬 3.7 32bit
3. 개발환경: Pycharm 최신버젼
4. UI 환경: PYQT5
5. DB: Sqlite
6. 모니터링 환경:
    1) Slack 앱 API를 통한 메세지 송신


    2) 빗썸 모바일앱

7. UI 화면

반응형

댓글()

ufunc 'add' did not contain a loop with signature matching types (dtype('<U170'), dtype('<U170')) -> dtype('<U170')

반응형

안녕하세요?

 

이 에러 메세지 원인을 못찾아서 거의 한시간을 헤멨습니다.

혹시, 이 에러 원인을 찾는 분이 계시다면 도움되시길 바랍니다.

 

다른 분들은 어떤 부분에서 에러나는지 모르겠지만,

저는 하기 sqlCode Text 문장을 만들어서 

 

try: 

    sqlCode = "select date, low from '" + ticker + "' t1 where t1.date <= (select max(t2.date) from '" + ticker + "' t2

    where t2.date < ( select date(max(t3.date), '-1 day') from '" + ticker + "' t3) and t2.low < " + current_price + ")"

 

    chart_data_low = pd.read_sql(sqlCode, con, index_col=None) # 추가로 인덱스 칼럼이 생성되지 않도록 한다.

except Exception as e:
    self.logging.logger.debug("(%s) retrieve_db_chart_data_low Exception발생: %s" % (ticker, e))
    print("chart_intervals: %s" % chart_intervals)

 

이렇게 하는 과정에서 Exception Error가 발생했습니다.

 

sqlCode 문자열을 생성할때, 문자열들만의 문자열 합하기가 되도록 중간중간의 인자값을 잘 확인하시기 바랍니다.

 

그럼, 즐(거운)파(이썬) 하시길 바랍니다.

반응형

댓글()

python exe 파일 실행시 failed to execute script 오류 해결하기

가상화폐|2021. 3. 7. 10:36
반응형

일단, pyinstaller를 삭제하고 다시 설치해 보겠습니다.

pip uninstall pyinstaller

다시 설치하기

pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip

다시 auto-py-to-exe 를 실행합니다.

하지만. 동일한 오류가 발생합니다. pyinstaller 버젼이나 설치오류와는 아무 관련이 없었습니다.

다시.. 여기 사이트를 참조하여 다시 해 보겠습니다.

In PyInstaller, Why Won't NumPy.Random.Common Load as a Module?

 

import pandas as pd 앞부분에 붉은색 부분 추가합니다.

# 추가한 부분
import numpy.random.common 
import numpy.random.bounded_integers 
import
 numpy.random.entropy

import pandas as pd

다음과 같이 다시 pyinstaller를 실행해 봅니다.

pyinstaller --icon=test.ico --onefile --noconsole -F -n goldcoin.exe -c --clean main.py
-F: 한 개의 파일로 만들기. 용량은 당연히 조금더 커진다. (없을 시 dll 파일들과 분리되어 폴더로 생성됨)
-n: 이름짓기. 이름은 바로 오른쪽에 기입 (없을 시 소스파일명과 동일한 파일이 생성됨)
--noconsole: exe파일 실행시 콘솔창 띄우지 않기
--onefile: import 된 라이브러리를 따로 생성하지 않고 exe 파일 안에 다 넣고 싶은 경우
--icon=test.ico: 실행파일의 아이콘을 바꾸고 싶다면 추가


D:\PycharmProject\BithumAPI\dist 여기에 goldcoin.exe파일이 잘 만들어져 있네요.

하지만.. 실행시에 다음과 같은 오류가 또... 

 

GUI 라이브러리를 사용할 때는 pyinstaller 후 생성된 .spec 파일을 수정해야 된다고 하네요.

(1) .spec 파일에서 라이브러리를 추가하고, coll 부분을 수정

(2) pyinstaller .spec

(3) .exe 파일 실행

 

함 해 보죠.. 

m.blog.naver.com/PostView.nhn?blogId=qbxlvnf11&logNo=221791248065&proxyReferer=https:%2F%2Fwww.google.com%2F

 

상세내용은 여기를 참조하라고 하네요..

kivy.org/doc/stable/guide/packaging-windows.html

 

다음은 main.spec의 내용입니다.

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None



a = Analysis(['main.py'],
             pathex=['D:\\PycharmProject\\BithumAPI'],
             binaries=[],
             datas=[('./TA_Lib-0.4.19-cp37-cp37m-win32.whl', '.')],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher,
             noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='goldcoin.exe',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          upx_exclude=[],
          runtime_tmpdir=None,
          console=True )

 

이번에는 수정한 spec파일을 pyinstaller 실행합니다.

pyinstaller --icon=.\image\goldcoin_1.ico --onefile --noconsole -F -n goldcoin.exe -c --clean main.spec

여전히 talib.stream 모듈을 찾을수 없다는 에러가 떠서,

python 소스에 추가해 주었습니다.

import talib
import talib.stream

 

이제 talib.stream오류는 해결되었나 봅니다.

다른 오류가 뜹니다.

KeyError: 'formatters'

 

원인을 보니, log config파일을 실행단계에서  logging.conf파일을 가져오지 못하는 오류인것으로 보입니다.

일반적으로 py파일을 실행할때는 아무 문제가 없던 부분입니다.

 

하기 붉은 색 부분을 os.path함수를 이용해서 명시적으로 path를 지정해 줍니다.

#!/usr/bin/python
# -*- coding: utf-8 -*-

import logging.config
from datetime import datetime
import os

class Logging():
    def __init__(self, config_path='config/logging.conf', log_path='log'):
        folderPath3 = os.path.abspath(os.getcwd()) + '/config'
        if not os.path.isdir(os.path.abspath(os.getcwd()) + '/config'):

           os.makedirs(os.path.abspath(os.getcwd()) + '/config')
        folderPath3 = str(folderPath3)
        config_path = os.path.abspath(folderPath3 + str("\\logging.conf"))

        folderPath3 = os.path.abspath(os.getcwd()) + '/log'
        if not os.path.isdir(os.path.abspath(os.getcwd()) + '/log'):

           os.makedirs(os.path.abspath(os.getcwd()) + '/log')
        log_path = str(folderPath3)
   
        self.config_path = config_path
        self.log_path = log_path

하지만, 소용이 없어 보입니다.

결국, pyinstaller에서 exe 실행파일 만들때는 log용 formater는 사용할 수가 없을 것 같습니다.

결국 모든 log 파일용 format 설정정보와 함수는 모두 지운후에 다시 실행해 보니, 정상적으로 exe파일이 실행됩니다.

pyinstaller --icon=.\image\goldcoin_1.ico --onefile --noconsole -F -n goldcoin.exe -c --clean main.spec

추가로, goldcoin.exe가 죽으면 계속해서 끊임없이 다시 실행시켜줄 ParentTrader.exe파일도 만들었습니다.

pyinstaller --onefile --noconsole -F -n ParentTrader.exe -c --clean ParentTrader.py

ParentTrader.exe를 실행하니, 다음과 같은 command창이 뜨면서 main창이 뜹니다.

여기서 "빗썸코인거래 시작"버튼을 누르면, 빗썸으로 자동접속되면서 매수추천 및 자동매매가 시작됩니다.

폴더내의 전체 파일 및 하위폴더 구조입니다.

반응형

댓글()

auto-py-to-exe로 python exe 파일 만들기

카테고리 없음|2021. 3. 7. 09:19
반응형

python 코드를 exe 배포파일 만들때는 pyinstaller를 사용합니다만,

옵션들을 직접 알고 타이핑해야 하는 불편함이 있었습니다.

 

그런데, 오늘..

출처: https://iamaman.tistory.com/3289 [남성의 MATLAB LOG]

님의 덕분에 좋은 방법을 찾게 되었습니다.

 

아래와 같이 anaconda prompt에서 pip install을 통해서 auto-py-to-exe를 설치해 줍니다.

그다음, auto-py-to-exe를 실행시키면 됩니다.

그러면, 다음과 같이 팝업 윈도우 창에서 실행파일 만드는 명령을 줄 수 있습니다.

약 10분 후에 정상적으로 완료되었다는 메세지가 보입니다.

이번에는 exe파일이 정상적으로 실행될 수 있을까요? 

지금까지 계속 실패하고 있거든요. exe파일 실행해도 에러 메세지도 없이 실행이 안되었거든요...

 

OPEN OUTPUT FOLDER를 눌러서 가니,

main.exe파일이 정상적으로 만들어져 있습니다. 실행을 해 볼까요?

에고.. 역시 또 실패입니다. numpy.random.common 모듈을 못찾았다네요.. 흠..

이거 오류 찾아서 결과 다시 올리겠습니다.

반응형

댓글()