๊ด€๋ฆฌ ๋ฉ”๋‰ด

IT’s Portfolio

[Python] requests์™€ urllib ๋ณธ๋ฌธ

Development Study/Python

[Python] requests์™€ urllib

f1r3_r41n 2022. 11. 18. 16:29
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ป Requests & urllib

  • requests: ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค๋ฃจ๊ธฐ ์‰ฝ๊ณ  ์•ˆ์ •์„ฑ์ด ๋›ฐ์–ด๋‚จ
  • urllib: ํŒŒ์ด์ฌ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€

๐Ÿ’€ Differences

  1. ์š”์ฒญ ์‹œ ์š”์ฒญ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ์ฐจ์ด
  2. ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ requests ๋Š” dict ํ˜•ํƒœ๋กœ urllib ์€ ์ธ์ฝ”๋”ฉํ•˜์—ฌ binary ํ˜•ํƒœ๋กœ ์ „์†ก
  3. requests ๋Š” ์š”์ฒญ ๋ฉ”์†Œ๋“œ(GET, POST) ๋ฅผ ๋ช…์‹œ, urllib์€ ๋ฐ์ดํ„ฐ ์—ฌ๋ถ€์— ๋”ฐ๋ผ GET Req, POST Req ๊ตฌ๋ถ„
  4. ์—†๋Š” ํŽ˜์ด์ง€ ์š”์ฒญ ์‹œ requests ๋Š” Error๋ฅผ ๋„์šฐ์ง€ ์•Š์ง€๋งŒ, urllib ์€ Error๋ฅผ ๋„์›€

๐Ÿ’ก Requests

  • GET ์š”์ฒญ: get() ์‚ฌ์šฉ
  • Other
    • put()
    • delete()
    • head()
    • options()
  • ์‘๋‹ต ์ƒํƒœ: status_code ๋ณ€์ˆ˜ ํ˜ธ์ถœ
  • ์‘๋‹ต ๋‚ด์šฉ ํ™•์ธ
    • content ๋ณ€์ˆ˜ ํ˜ธ์ถœ: ๋””์ฝ”๋”ฉํ•˜์ง€ ์•Š์€ binary ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ
    • encoding ๋ณ€์ˆ˜ ํ˜ธ์ถœ: ์š”์ฒญ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹ ํ™•์ธ ๋ฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
    • text ๋ณ€์ˆ˜ ํ˜ธ์ถœ: Requests ์‘๋‹ต ํ—ค๋”๋ฅผ ๋ณด๊ณ  ํ•ด๋‹น ๊ฐ์ฒด์˜ ์ธ์ฝ”๋”ฉ์„ ์ถ”์ธกํ•˜์—ฌ ํ•ด๋‹น ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ๋””์ฝ”๋”ฉํ•œ ๋ฐ์ดํ„ฐ
    • headers ๋ณ€์ˆ˜ ํ˜ธ์ถœ: ์‘๋‹ต ํ—ค๋” ํ™•์ธ
    • json(): ์‘๋‹ต ๋ฐ์ดํ„ฐ๊ฐ€ json ํ˜•์‹์ด๋ฉด dict ํ˜•์‹์œผ๋กœ ๋ถˆ๋Ÿฌ์˜ด

๐Ÿ’ก urllib

  • Python2 urlparse => Python3 urllib.parse
  • URL Handling module

1. urllib.request

  • ๋‹ค์ด์ œ์ŠคํŠธ ์ธ์ฆ, ๋ฆฌ๋””๋ ‰์…˜, ์ฟ ํ‚ค ๋“ฑ๊ณผ ๊ฐ™์€ URL์ด๋‚˜ HTTP๋ฅผ ์—ฌ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค ์ •์˜. ๊ฐ„๋‹จํ•˜๊ฒŒ ์›น ํŽ˜์ด์ง€ ์š”์ฒญ ๋ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
    • Digest Access Authentication์— ๋Œ€ํ•œ ๊ธ€
    • .urlopen()
      • String์ด๋‚˜ Request ๊ฐ์ฒด์ธ URL์„ ์—ด์–ด์คŒ
        • urlopen() ์— url์„ ์ธ์ˆ˜๋กœ ์ง์ ‘ ๋„˜๊ฒจ์ฃผ์–ด๋„ ๋˜๊ณ , Request ํด๋ž˜์Šค์— URL์„ ๋„ฃ์–ด ์ƒ์„ฑ ํ›„ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ์–ด๋„ ๋จ
      • url ๋„ฃ์–ด์„œ ํ˜ธ์ถœ ์‹œ html ๋ฆฌํ„ด
      • read() ๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ decode ํ•ด์ฃผ์–ด์•ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Œ
    • ์ƒํƒœ ํ™•์ธ
      • ๋ฐ˜ํ™˜๋œ ๊ฐ์ฒด์˜ status ๋ณ€์ˆ˜ ์‚ฌ์šฉ
    • .urlretrieve()
      • url์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ํ•ด๋‹น ์ž์›์„ local์— ์ €์žฅ ๊ฐ€๋Šฅ

2. urllib.error

  • URLError: ์—†๋Š” URL
  • HTTPError: ์‚ฌ์ดํŠธ ์„œ๋ฒ„์—์„œ Access Block

3. urllib.parse

  • URL๊ณผ Parameter๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ
  • ๊ฐ„๋‹จํ•œ ๋ฌธ์ž์—ด ํŒŒ์‹ฑ ์‹œ์—๋Š” ๋ณดํ†ต ์ •๊ทœํ‘œํ˜„์‹์„ ๋งŽ์ด ์‚ฌ์šฉ. ํ•˜์ง€๋งŒ ๋‹จ์ˆœ ํŒจํ„ด์„ ์ฝ์„ ๋•Œ๋Š” parse ๋ชจ๋“ˆ ์‚ฌ์šฉ ์‹œ ์œ ์šฉ
  • .urlparse(): url ํŒŒ์‹ฑ
    • ํŒŒ์‹ฑ ํ›„ ํ•ด๋‹น ๊ฐ์ฒด ๋‚ด์˜ ๋ณ€์ˆ˜ ์‚ฌ์šฉ ์‹œ ํ•ด๋‹น ๊ฐ’ ๋ฆฌํ„ด๋จ
    • parse_qs(): ์‚ฌ์šฉ ์‹œ ๋ฆฌํ„ด ํƒ€์ž…์ด dict
    • Quote: ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ
      • .quote_plus(): ๊ณต๋ฐฑ +
      • .quote(): ๊ณต๋ฐฑ %20
728x90
๋ฐ˜์‘ํ˜•
Comments