๊ฐœ๋ฐœ๐Ÿ’ป/Python

    [Python] self๋Š” ๋ฌด์—‡์ผ๊นŒโ“

    ๊ฐœ์š”Dreamhack ์›น ํ•ดํ‚น ๊ฐ•์˜๋ฅผ ์ˆ˜๊ฐ•ํ•˜๋˜ ์ค‘ Blind SQL Injection ๋ถ€๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ์ด๋•Œ๊นŒ์ง€ ํ•˜๋˜ ์ฝ”๋”ฉ๊ณผ๋Š” ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ปด ์ฝ”๋“œ ๋ถ„์„์„ ์„ธ๋ถ€์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๊ณ  Python์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋Š” Class ์™€ self์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…ํ•˜์˜€๋‹ค. Python selfDreamhack ๊ฐ•์˜ ์ค‘ ์ œ๊ณต๋œ ์ฝ”๋“œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  self ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉํ•œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, github์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ๋“ค๋งŒ ๋ณด๋”๋ผ๊ณ  self๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋งŽ์ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.import requests import sys from urllib.parse import urljoin class Solver: """Solver for simple_SQLi challenge""" # initial..

    [Python] ํŒŒ์ด์ฌ ๋ฆฌ์ŠคํŠธ(List)

    ๋ฆฌ์ŠคํŠธ(List)๋ž€? ์—ฌ๋Ÿฌ ์ž๋ฃŒ๋“ค์„ ๋ชจ๋ชฉ๋ก ํ˜•ํƒœ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋กœ ์‚ฌ์šฉ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. #๊ฐ’์ด ์—†๋Š” ๋ฆฌ์ŠคํŠธ ์„ ์–ธ test_list = [] print(test_list) #๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”(int ํ˜•) init_list = [1,2,3,4] print(init_list) #๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”(str ํ˜•) str_list = ['1', '2', '3', '4'] print(str_list) [์ถœ๋ ฅ ๊ฒฐ๊ณผ] [] [1, 2, 3, 4] ['1', '2', '3', '4'] ๋ฆฌ์ŠคํŠธ + "์—ฐ์‚ฐ์ž" ๋ฆฌ์ŠคํŠธ + ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅด๋”๋ผ๋„ "๋ฆฌ์ŠคํŠธ + ๋ฆฌ์ŠคํŠธ"๋ฅผ ํ•  ๊ฒฝ์šฐ ์ •์ƒ์ ์œผ๋กœ ๊ฒฐํ•ฉ๋˜์–ด ์ถœ๋ ฅ๋œ๋‹ค. #๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”(int ํ˜•) init_list = [1,2,3,4] #๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”(str ํ˜•) str_list = ..

    [Python] most likely due to a circular import ์˜ค๋ฅ˜

    [Python] most likely due to a circular import ์˜ค๋ฅ˜

    Python ๋ชจ๋“ˆ์ธ Argparse๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉํ•˜๋˜ ์ค‘ most likely due to a circular import ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ํ•ด๋‹น ์—๋Ÿฌ๋Š” ์ž‘์—… ํด๋” ๋‚ด ๋ชจ๋“ˆ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์„ ๊ฐ€์ง„ ํŒŒ์ผ์ด ์กด์žฌํ•  ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์ด๋‹ค. ์‹ค์ œ ์œ„์˜ ์—๋Ÿฌ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด argparse.py๋กœ ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. (argparse๋Š” Python ์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์ œ๋œ ๋ชจ๋“ˆ) Python ์œผ๋กœ ์ฝ”๋”ฉ ์‹œ ๋ชจ๋“ˆ๊ณผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์„ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋ฉฐ ๋งŒ์•ฝ ๋ชจ๋“ˆ๋ช…์„ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด ๋’ค์— ์ถ”๊ฐ€์ ์ธ ๋ฌธ์ž์—ด์„ ๋„ฃ์–ด์„œ argparse_1, argparse_test ์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์˜ค๋ฅ˜, ์ž˜๋ชป๋œ ์  ๋˜๋Š” ๊ถ๊ธˆํ•œ ์ ์ด ์žˆ์œผ์‹œ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋‚จ๊ฒจ์ฃผ์„ธ์š”โ—

    [Python] Argparse ๋ชจ๋“ˆ ์‚ฌ์šฉ๋ฒ• ๋ฐ Cli ์˜ต์…˜

    [Python] Argparse ๋ชจ๋“ˆ ์‚ฌ์šฉ๋ฒ• ๋ฐ Cli ์˜ต์…˜

    Argparse ๋ชจ๋“ˆ Argparse ๋ชจ๋“ˆ์€ Cli ๋ฅผ ํ†ตํ•˜์—ฌ Python ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ ํŠน์ • ์˜ต์…˜์„ ์ง€์ •ํ•˜๊ณ  ์˜ต์…˜์— ๋Œ€ํ•œ ๊ฐ’์„ ์ฝ”๋“œ ๋‚ด ์ธ์ž๋กœ ์ „๋‹ฌ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๋ชจ๋“ˆ์ด๋‹ค. https://docs.python.org/ko/3/library/argparse.html argparse — ๋ช…๋ นํ–‰ ์˜ต์…˜, ์ธ์ž์™€ ๋ถ€์† ๋ช…๋ น์„ ์œ„ํ•œ ํŒŒ์„œ — Python 3.11.0 ๋ฌธ์„œ argparse — ๋ช…๋ นํ–‰ ์˜ต์…˜, ์ธ์ž์™€ ๋ถ€์† ๋ช…๋ น์„ ์œ„ํ•œ ํŒŒ์„œ ์†Œ์Šค ์ฝ”๋“œ: Lib/argparse.py The argparse module makes it easy to write user-friendly command-line interfaces. The program defines what arguments it requires, a..

    [Crawling] ํ•ฉ๋ฒ•์ ์ธ Web Crawling ํ•˜๋Š” ๋ฒ•

    ์›น ํฌ๋กค๋ง์ด๋ž€? ์‚ฌ์ „์  ์ •์˜๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋‚ด ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ด‡์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ–‰์œ„, ์›น ์ƒ์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ํ–‰์œ„์ด๋‹ค. ํฌ๋กค๋ง์„ ํ•˜๋Š” ๊ฐ€์žฅ ํ”ํ•œ ๋ฐฉ๋ฒ•์€ Python(Beautifulsoup, Selenium) ๋“ฑ์ด ์กด์žฌํ•œ๋‹ค. ๊ฐœ์ธ์ ์œผ๋กœ Selenium์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  Selenium๊ณผ ๊ด€๋ จ๋œ ํฌ์ŠคํŒ…์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 2022.09.09 - [๊ฐœ๋ฐœ๐Ÿ’ป/Python] - [Python] Selenium ์‚ฌ์šฉํ•˜๊ธฐ [Python] Selenium ์‚ฌ์šฉํ•˜๊ธฐ ์™œ Selenuim์„ ์‚ฌ์šฉํ•˜์ง€?? ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์•Œ๋ ค์ง„ BeautifulSoup ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์‚ฌ์ดํŠธ์˜ ๋‹ค์–‘ํ•œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ...BeautifulSoup์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์ •๋ณด๋Š” ๊ฐ€ bym..

    [Python] Shadow DOM ํฌ๋กค๋ง - Selenium

    [Python] Shadow DOM ํฌ๋กค๋ง - Selenium

    Selenium No Such Element ์—๋Ÿฌ ์ตœ๊ทผ Selenium์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋กค๋Ÿฌ๋ฅผ ๊ตฌ์ถ•ํ•  ์ผ์ด ์ƒ๊ฒจ ํ‰์†Œ์™€ ๊ฐ™์ด Xpath, Selector ๋“ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•์„ ์‹œ๋„ํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ, Selenium ์‚ฌ์šฉ ์‹œ ๊ฐ€์žฅ ํ”ํ•œ ์—๋Ÿฌ์ธ selenium.common.exceptions.NoSuchElementException: Message:no such element:Unable to locate element:{"method":"css selector", "selector':"์‹ค์ œ ์‚ฌ์šฉํ•œ ๊ตฌ๋ฌธ" ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ชจ๋“  ๋ฐฉ๋ฒ•์„ ๋™์›ํ•ด ์ˆ˜์ •ํ•˜์˜€์œผ๋‚˜ ์˜ค๋ฅ˜๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ํ•ด๋‹น ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํด๋ž˜์Šค ๋ช…์— ๊ณต๋ฐฑ์ด ์กด์žฌํ•˜์—ฌ ๊ณต๋ฐฑ ๋Œ€์‹ ์— ์ (.)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ, ๋กœ๋”ฉ ์‹œ๊ฐ„์œผ๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„..

    [Python] ํŒŒ์ด์ฌ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋ฒ• ๋ฐ ๋‹จ์ถ•ํ‚ค(์ฃผ์„ ์ฒ˜๋ฆฌ ์•ˆ๋  ๋•Œ ํ•ด๊ฒฐ๋ฒ•)

    ์ฃผ์„์ด๋ž€? ์ฃผ์„์€ ๋ฉ”๋ชจ์žฅ๊ณผ ๊ฐ™์€ ๊ฐœ๋…์ด๋‹ค. ์‹ค์ œ๋กœ ์ฝ”๋“œ ๋Ÿฐํƒ€์ž„ ๋„์ค‘ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฉฐ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ๋Š” ์—†๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค. ์ฃผ์„ ๊ธฐ๋Šฅ์€ ํŒŒ์ด์ฌ์—๋งŒ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ๋Œ€๋ถ€๋ถ„์— ์กด์žฌํ•˜๋ฉฐ ์ฃผ๋กœ ์ฝ”๋”ฉ ์‹œ ์ฝ”๋“œ ์„ค๋ช…์— ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—…์šฉ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋‚จ๊ฒจ๋‘˜ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.(๊ฐœ์ธ์ ์ธ ์‚ฌ์šฉ๋ฒ•) ํŒŒ์ด์ฌ ์ฃผ์„์˜ ์ข…๋ฅ˜ 1. ํ•œ์ค„ ์ฃผ์„ # ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ถœ๋ ฅ print("test") # ์›ํ•˜๋Š” ์ฝ”๋“œ ์ฃผ์„ ์ฒ˜๋ฆฌ #print("test") print("#์€ ํ•œ์ค„๋งŒ ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์Œ") '#' ์„ ์ž…๋ ฅํ•  ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ฃผ์„ ์ฒ˜๋ฆฌ๋˜๋ฉฐ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์›ํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•  ์‹œ ํ•ด๋‹น ์ฝ”๋“œ์— ์ปค์„œ๋ฅผ ๋‘๊ณ  #์„ ๋ˆ„๋ฅด๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์ฝ”๋“œ(ํ•œ์ค„)๋ฅผ ์ฃผ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ """ print("..

    [Python] ๊ฐ€์ƒ ํ™˜๊ฒฝ ์‚ฌ์šฉํ•˜๊ธฐ(venv)

    [Python] ๊ฐ€์ƒ ํ™˜๊ฒฝ ์‚ฌ์šฉํ•˜๊ธฐ(venv)

    ๊ฐ€์ƒ ํ™˜๊ฒฝ์ด๋ž€? ๋‹จ์–ด ๊ทธ๋Œ€๋กœ ๊ฐ€์ƒ์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ํ™˜๊ฒฝ์ด๋‹ค. ์‹ค์ œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ํŒจํ‚ค์ง€(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์˜ ๋ฒ„์ „ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ๊ฒฝํ—˜๋“ค์„ ํ•  ๊ฒƒ์ด๋‹ค. ๋งŒ์•ฝ ํŠน์ • ํ”„๋กœ๊ทธ๋žจ์—์„œ ์–ด๋–ค ํŒจํ‚ค์ง€์˜ ์š”๊ตฌ ๋ฒ„์ „์ด 1.7์ธ๋ฐ ํ˜„์žฌ 1.8 ๋ฒ„์ „์„ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ ํ›„ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ 1.8๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ์ ํŠธ ๋ณ„๋กœ ๋…๋ฆฝ๋œ ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์ „์— ๊ตฌ์ถ•ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ฐ€์ƒ ํ™˜๊ฒฝ ์ƒ์„ฑ ์ด์ „ ๋ฒ„์ „์˜ ํŒŒ์ด์ฌ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ„๋„์˜ ์„ค์น˜ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค. pip install virtualenv ํ•˜์ง€๋งŒ, ํŒŒ์ด์ฌ 3.3 ์ด์ƒ์˜ ๋ฒ„์ „์€ venv ๋ชจ๋“ˆ์ด ์ž์ฒด์ ์œผ๋กœ ๋‚ด์žฅ๋˜..