파이썬에서 BeautifulSoup 의 find

Posted by 두두오빠
2018. 8. 19. 19:03 프로그래밍/파이썬 Python

BeautifulSoup을 사용하면서 find를 경우에 따라서 사용하고 있다


한번쯤 정리를 해보고 넘어가는 것이 기억에도 남고, 지속적으로 내 자산이 될 것이다




find 가 하는일


find 는 해당인자를 찾는 역할을 한다


아래 소스로는, 첫번째의 <table>      -------------------    </table>   이 나오는 것을 확인할 수 있다



    soup = BeautifulSoup(html, 'html.parser')

    content_table = soup.find('table')

    

    print(content_table)

    



다음을 통해 추가적으로 확인해보자


    data_result = soup.find('table')


    f2data = data_result.find('tr')
    print(f2data)


    f2data = data_result.find("tr")

    print(f2data)



find안의 문자에 따옴표를 한개를 사용해도, 두개를 사용해도, 결과는 같다.


처음으로 존재하는 다음 구문을 가져온다

<tr>    </tr>  




쫌 더 확장을 해보자


스크립트에는 속성을 가진 것들이 있다


지금까지의 방법으로,   <tr class= "first"> 이런 구문을 가져오기 위해서 테스트를 해보았다



    f2data = data_result.find('tr class')

    print(f2data)



결과는 None으로 찍힌다


단순히 문자를 찾는 개념이라면 'tr class' 로 검색했을때 어떤 값이라도 나왔어야 하는데


단순한 생각으로 원하는 결과를 얻지는 못했다




그럼.. find로는 각 속성까지 찾지 못하는 걸까?


아니다 


다음과 같은 방법이 있다


    f2data = data_result.find("tr", {"class":"first"})

    print(f2data)


원하는 다음의 구문을 가져오는 것을 성공하였다


<tr class= "first">  ---------------   </tr>




[오토핫키 AutoHotKey] 오토핫키에서 파이썬 실행파일 불러오기

Posted by 두두오빠
2018. 3. 8. 10:39 프로그래밍/오토핫키 AutoHotKey

오토핫키에서 파이썬 프로그램을 호출해서 실행되도록 해보자.


;파이썬 들어있는 폴더 오픈

run D:\Python

sleep, 2000

;파이썬 프로그램 실행

run D:\Python\python.exe

sleep, 3000

send import soccer_eng

send {Enter}

sleep, 3000


send soccer_eng.main()

send {Enter}



직접 실행했을때랑, 자동으로 run 시켰을때랑 실행되는 파일이 뭔가 다르다.

아래 화면을 살펴보면 화면 자체의 차이점도 있다. 

좌측상단의 마크도 약간 다르게 생겼다.


직접 파이썬 실행하는 경우

문제없이 main 작업이 실행된다.



오토핫키를 통해서 파이썬 실행하는 경우

main작업에서 오류가 발생한다. 

./recentData.txt 파일을 찾을 수 없는 오류다.



이유는?

파일 경로에 관한 문제다.

os.getcwd() 로 확인해보면, 경로의 차이를 확인 가능하다.

위의 화면에서 보면, 오토핫키로 실행한 것은 오토핫키 실행파일이 있는 경로로 나온다.


아래 화면은 직접 실행한 파이썬에서 확인 가능한 경로다.

여기는 파이썬 실행파일이 존재하는 경로로 되어있다.


해결방법은?

파이썬 프로그램 자체에 강제로 경로를 바꾸는 작업을 추가한다. 실행해보면 양쪽에서 오류없이 정상으로 작업이 진행된다.

    import os

    print(os.getcwd())

    os.chdir("D:\\Python")

    print(os.getcwd())


오토핫키에서 경로를 바꿔주는 방법으로도 확인해볼 수 있다.

send import os

send {Enter}

;파이썬에서 사용하는 경로 변경해주기

send os.chdir("D:\\Python")

send {Enter}

결론적으로는 현재 경로를 변경하는 방법을 사용해야 한다. 

이는 오토핫키나 파이썬 양쪽 중 아무곳이나 수정함으로써 정상적으로 실행시킬 수 있다. 

내가 가지고 있는 프로그램은, 오토핫키에서 파이썬을 호출하면서 파이썬의 경로를 이미 지정하고 있다. 

그래서 오토파일에서 경로를 설정해주는 방법으로 접근하는게 추후 확장 가능한 측면에서 더 나은 선택이다.


[오토핫키 AutoHotKey] 이미지 서치하는 방법을 자세히 확인 가능한 사이트

Posted by 두두오빠
2018. 3. 3. 18:07 프로그래밍/오토핫키 AutoHotKey

이미지 서치를 알아보다가 다른 곳보다 자세하게 설명해 놓은 사이트 발견

http://autohotkey.kro.kr/221038205185

해당 내용밖에 읽어보지는 않았지만, 다른 포스팅들도 괜찮을 것 같다. 꽤 다양한 주제를 가지고 오토핫키에 대해서 설명을 해 두었다.

[오토핫키 AutoHotKey] 설치부터 간단한 프로그래밍 방법까지 참고할만한 사이트

Posted by 두두오빠
2018. 3. 3. 17:41 프로그래밍/오토핫키 AutoHotKey

설치부터 간단한 프로그래밍 방법까지 참고할만한 사이트가 있다. 오토핫키에 대해서 찾아보다가 처음 찾은 블로그이다. 개인적인 공부의 목적으로 작성된 내용 같은데, 자세히 잘 설명해 두어서 훑어보기 괜찮았다. 

https://blog.naver.com/gupal_kang/220960863573

직접 작성한 소스도 볼 수 있고, 각 요소에 대해서 설명도 잘 되어 있다. 정리를 하는데 많은 시간이 들었음이 보인다. 아쉬운 점은, 2017년 3월에 4강을 끝으로 완료되었다.


[오토핫키 AutoHotKey] 프로그램 설치하기에서부터 문제가 발생

Posted by 두두오빠
2018. 3. 3. 17:22 프로그래밍/오토핫키 AutoHotKey

오토핫키를 설치하는 방법을 검색해보면, 아주 쉽게 그 결과를 찾아볼 수가 있다. 그래서 쉽게 프로그램을 만들어 볼 수 있겠다 싶었다. 그러나 변수가 발생했다. 프로그램 설치하기에서부터 문제가 발생했다.

결론부터 말하면, 맥 os에서는 오토핫키가 설치가 되지 않는다.

맥북이 여러가지 코딩을 하는데 도움을 주지를 않는다. ios 개발을 했었을때는 유용하게 사용했는데, 그외 다른 것들은 힘들게 한다. java 프로그래밍을 하다가도 windows에서 작성된 소스랑 형식이 약간 달라서 애를 먹었다. 텍스트 파일을 읽어서 처리하거나, 개행문자를 처리하는데 맥과 윈도우의 차이가 확연히 드러났다. 맥북으로 작성된 프로그래밍 소스를 다른 운영체제 안에서 확인하기가 너무 힘들다. 이번 것은 프로그램이 설치조차 안되니까 말이다.

맥북은 ios 개발이나 할때 사용해야 할 것 같다.

오토핫키는 windows가 설치된 컴퓨터로 개발을 해봐야겠다.



[파이썬 Python] mac버전으로 Python에 BeautifulSoup 설치하기

Posted by 두두오빠
2017. 9. 6. 23:30 프로그래밍/파이썬 Python

python 사용을 위해서, window 환경에는 설치를 완료했고, 개인적으로 사용하는 mac에도 설치를 해봤다. python 을 다운로드 받고, 실행까지 잘 되는 것을 확인할 수 있었다. 하지만, BeautifulSoup 사용을 위한 설치도중에 문제에 계속 걸렸다.


검색중에 mac에는 이미 python이 설치되어 있다는 것을 알았다. terminal 에서 python 을 실행하면, 현재 작동 가능한 버전의 python이 실행된다. 현재 가능한 버전은 2.7.10 이다. 나는 python 을 설치한 적이 없지만, 이미 2015년부터 설치가 되어 있었다라고 나온다.






Python에 BeautifulSoup 설치하기

다운로드 받은, BeautifulSoup 파일의 경로를 확인하여, 해당 경로에 들어간다.


cd /Applications/beautifulsoup4-4.6.0


다음 명령을 실행시키면 python 에 BeautifulSoup 가 설치된다.

Kim-ui-MacBook-Air:beautifulsoup4-4.6.0 kkk$ python setup.py install



BeautifulSoup 설치중에 다음과 같은 메시지가 나온다.


running install

Checking .pth file support in /Library/Python/2.7/site-packages/

error: can't create or remove files in install directory


The following error occurred while trying to add or remove files in the

installation directory:


    [Errno 13] Permission denied: '/Library/Python/2.7/site-packages/test-easy-install-35586.pth'


The installation directory you specified (via --install-dir, --prefix, or

the distutils default setting) was:


    /Library/Python/2.7/site-packages/


Perhaps your account does not have write access to this directory?  If the

installation directory is a system-owned directory, you may need to sign in

as the administrator or "root" account.  If you do not have administrative

access to this machine, you may wish to choose a different installation

directory, preferably one that is listed in your PYTHONPATH environment

variable.


For information on other options, you may wish to consult the

documentation at:


  https://pythonhosted.org/setuptools/easy_install.html


Please make the appropriate changes for your system and try again.



권한이 없어서 실행할 수 없다는 에러메시지 확인할 수 있다. permission을 주기 위해 sudo를 사용한다. 

> sudo python setup.py install


Kim-ui-MacBook-Air:beautifulsoup4-4.6.0 kkk$ sudo python setup.py install

Password:


정상적으로 설치 완료!

이제 파이썬으로 들어가서 설치여부를 확인해보면 된다. 다음 명령이 아무 문제 없이 실행된다면, 정상적으로 설치완료

>>> from bs4 import BeautifulSoup


[파이썬 Python] 파이썬으로 크롤링 도전하기

Posted by 두두오빠
2017. 9. 6. 22:23 프로그래밍/파이썬 Python

데이터를 가공하는 부분에 관심을 가지면서, 수집하는 것을 조금 더 효율적으로 할 수 있는 방법에 대해서 찾아보게 되었다. 평소에 사용하는 Java 언어를 가지고도 구현 가능하다는 것을 알았다. 우연찾게 찾은 내용은 JavaScript 를 사용해서 구현 가능하다는 것이었다. 해당 내용에 대해서 더 많은 정보를 찾기 위해서 들린 도서관에서, 파이썬으로 크롤링하는 것을 설명해주는 책을 찾았다.


이전부터 파이썬이 데이터 수집하는 부분에서는 많이 쓰인다고 들었는데, 평소에 사용하지 않는 프로그래밍 언어라 쉽게 접해볼 수가 없었다. 하지만 목적이 분명하게 생기니, 한번 해볼까 하는 생각이 들었다.


그래서 시작했다. 지하철로 출퇴근하는 30분동안, 도서관에서 빌린책을 읽었다. 프로그래밍 관련 책들이 갖는 뻔한 레퍼토리처럼, 처음에는 해당 언어의 문법이 가득했다. 하지만, 문법이 다른 언어들과 다른 부분이 전혀 없었다. 전에 objective-c를 공부하면서, ios개발을 잠시 했을때는 책을 이해하는 것도 많이 생소했었다. 그런데 이번 책은 술술 읽혀나갔다.


그리고 목적은 크롤링이기 때문에, 기본 문법들은 쉽게 지나갔다. 실제 코딩을 해보는 시간은 없었지만, 내용을 이해하면서 책 한권을 일주일도 안되서 끝냈다. 이제 실제 프로그래밍을 해보면서, 더 많은 것을 알아갈 수 있지 않을까 싶다.


파이썬으로 크롤링에 도전해보자.