Design Web Crawler
Web Crawler
μΉ ν¬λ‘€λ¬λ μΉ νμ΄μ§λ₯Ό νμνκ³ μ 보λ₯Ό μμ§νλ κΈ°μ λ‘, λ€μνκ² μ΄μ©λλ€.
κ²μ μμ§ μΈλ±μ±: κ°μ₯ 보νΈμ μΈ μ©λ‘λ‘, μΉ νμ΄μ§λ₯Ό λͺ¨μ κ²μ μμ§μ μν λ‘컬 μΈλ±μ€ μμ± λͺ©μ
μΉ μμΉ΄μ΄λΉ: λμ€μ μ¬μ©νκΈ° μν μ₯κΈ°λ³΄κ΄ λͺ©μ
μΉ λ§μ΄λ: μΈν°λ· μΉμ μ μ©ν μ§μμ μΆμΆνκΈ° μν λͺ©μ
μΉ λͺ¨λν°λ§: μΈν°λ·μμ μ μκΆμ΄λ μνκΆμ΄ μΉ¨ν΄λλ κ²μ κ°μ§νκΈ° μν λͺ©μ
μΉ ν¬λ‘€λ¬λ μ²λ¦¬ν΄μΌ ν λ°μ΄ν°μ κ·λͺ¨μ λ°λΌ μμ€ν μ 볡μ‘λλ λ¬λΌμ§κΈ° λλ¬Έμ, μ£Ό λͺ©μ κ³Ό μμ§ν΄μΌν λ°μ΄ν°μ μμ κ³ λ €νμ¬ μ€κ³ν΄μΌ νλ€.
μꡬμ¬ν λ° κ°λ΅μ μΆμ
κ²μ μμ§ μΈλ±μ± μμ§ λͺ©μ
λ§€λ¬ 10μ΅ κ°μ μΉ νμ΄μ§ μμ§
μμ§ν μΉ νμ΄μ§λ 5λ κ° λ³΄κ΄
κ·λͺ¨ νμ μ± μ©μ΄
ν¬λ‘€λ§ μ μμ μ± λ³΄μ₯(무λ°μ μλ² / μ₯μ / μ μ± μ½λ λ±)
μμ§ λμ μΉ μ¬μ΄νΈμ λΆνμν μμ² X
μ€λ³΅λ 컨ν μΈ λ 무μ
μΉ ν¬λ‘€λ¬κ° μμ κ°μ μꡬμ¬νμ λ§μ‘±ν΄μΌν λ, μλμ κ°μ΄ μΆμ ν΄λ³Ό μ μλ€.
QPS = 10μ΅ / 30μΌ / 24μκ° / 60λΆ / 60μ΄ = 385/μ΄, μ΅λ QPS = 385 * 2 = 770/μ΄
λ μ½λ μ: 10μ΅ * 12κ°μ * 5λ = 600μ΅
μ μ₯ μ©λ: (νκ· μΉ νμ΄μ§ ν¬κΈ° 500k κ°μ ) 600μ΅ * 500k = 300PB
μ€κ³ λ° μμ§ νλ‘μ°
μΉ ν¬λ‘€λ¬ μ€κ³ μ μμ κ°μ΄ μ»΄ν¬λνΈλ₯Ό λλμ΄ μ€κ³ν μ μλ€.
μμ URL μ§ν©: μΉ ν¬λ‘€λ¬κ° ν¬λ‘€λ§μ μμνλ URL μ§ν©
λ―Έμμ§ URL μ μ₯μ: νλμ μΉ ν¬λ‘€λ¬λ ν¬λ‘€λ§ ν¬λ‘€λ§ μνλ₯Ό λ€μ΄λ‘λν URL / λ€μ΄λ‘λ λ URL λ κ°μ§λ‘ λλ κ΄λ¦¬νλλ°, λ€μ΄λ‘λν URLμ ν΄λΉνλ URL μ μ₯μ
HTML λ€μ΄λ‘λ: μΉ νμ΄μ§λ₯Ό λ€μ΄λ‘λ
λλ©μΈ μ΄λ¦ λ³νκΈ°: URLμ IP μ£Όμλ‘ λ³ν
컨ν μΈ νμ: μΉ νμ΄μ§λ₯Ό νμ±νκ³ , μ¬λ°λ₯Έ μΉ νμ΄μ§μΈμ§ νμΈ
μ€λ³΅ 컨ν μΈ : μ€λ³΅λ 컨ν μΈ λ₯Ό νμΈ
λ¬Έμμ΄λ‘ λ³΄κ³ λΉκ΅νλ κ²μ΄ κ°μ₯ μ ννκ³ κ°λ¨νμ§λ§, λ리기 λλ¬Έμ ν΄μ κ°μ λΉκ΅νλ λ°©λ² μ¬μ©
컨ν μΈ μ μ₯μ: λ€μ΄λ‘λν μΉ νμ΄μ§λ₯Ό μ μ₯
URL μΆμΆκΈ°: HTML νμ΄μ§λ₯Ό νμ±νμ¬ μλ‘μ΄ URLμ μΆμΆ
μμ: μλ κ²½λ‘μΈ
/wiki/platypus
λ₯Όhttps://en.wikipedia.org/wiki/platypus
λ‘ λ³ν
URL νν°: νΉμ ν 컨ν μΈ νμ μ΄λ νμΌ νμ₯μλ₯Ό κ°λ URL / μ μ μ μ€λ₯ λ°μ URL / μ μΈ λͺ©λ‘μ ν¬ν¨λ URL λ±μ νν°λ§
μ΄λ―Έ λ°©λ¬Έν URL: μ΄λ―Έ λ°©λ¬Έν URLμΈμ§ νμΈνμ¬ κ°μ URL μ¬λ¬ λ² λ°©λ¬Ένλ κ²μ λ°©μ§
URL μ μ₯μ: λ€μ΄λ‘λλ URLμ μ μ₯
μ μ»΄ν¬λνΈλ‘ ꡬμ±λ μΉ ν¬λ‘€λ¬μ μμ νλ¦μ κ°λ΅νκ² μμ½νλ©΄ λ€μκ³Ό κ°λ€.
μμ URLλ€μ λ―Έμμ§ URL μ μ₯μμ μ μ₯
HTML λ€μ΄λ‘λμμ λ―Έμμ§ URL μ μ₯μμμ URL λͺ©λ‘μ κ°μ Έμ΄
λλ©μΈ μ΄λ¦ λ³νκΈ°λ₯Ό μ¬μ©νμ¬ URLμ IP μ£Όμλ‘ λ³ν ν μΉνμ΄μ§ λ€μ΄λ‘λ
컨ν μΈ νμμμ λ€μ΄λ HTML νμ΄μ§λ₯Ό νμ±νμ¬ μ¬λ°λ₯Έ μΉ νμ΄μ§μΈμ§ κ²μ¦
κ²μ¦ ν μ€λ³΅ 컨ν μΈ μΈμ§ νμΈ
μ€λ³΅ 컨ν μΈ μΈμ§ νμΈνκΈ° μν΄ μ»¨ν μΈ μ μ₯μμμ ν΄μ κ°μ λΉκ΅
μ΄λ―Έ μ μ₯μμ μλ κ²½μ° μ²λ¦¬νμ§ μκ³ λ²λ¦Ό
URL μΆμΆκΈ°μμ ν΄λΉ HTML νμ΄μ§μμ λ§ν¬λ₯Ό μΆμΆ
μΆμΆλ λ§ν¬λ₯Ό URL νν°λ‘ μ λ¬
νν°λ§μ κ±°μΉ ν λ¨μ URLλ€ μ€ μ΄λ―Έ λ°©λ¬Έν URLμΈμ§ νμΈ
μ΄λ―Έ λ°©λ¬Έν URLμΈ κ²½μ° μ²λ¦¬νμ§ μκ³ λ²λ¦Ό
μ μ₯μμ μλ URLμΈ κ²½μ° URL μ μ₯μμ μ μ₯ ν λ―Έμμ§ URL μ μ₯μμ μ λ¬
μ λ¬λ URLλ€μ λμμΌλ‘ λ€μ 2λ²μΌλ‘ λμκ° λ°λ³΅
μμΈ μ€κ³
DFS vs BFS
νλμ μΉ νμ΄μ§ μμ μ¬λ¬ λ§ν¬κ° μ‘΄μ¬νκ³ , μ΄ λ§ν¬λ€μ λ€λ₯Έ μΉ νμ΄μ§λ‘ μ°κ²°λμ΄ μμ΄, νλμ μ ν₯ κ·ΈλνλΌκ³ λ³Ό μ μλ€. λλ¬Έμ ν¬λ‘€λ§ νλ‘μΈμ€λ μ΄λ¬ν μ ν₯ κ·Έλνλ₯Ό νμνλ κ³Όμ μ΄λΌ λ³Ό μ μμ΄, DFSμ BFS μ€ μ΄λ€ λ°©μμΌλ‘ νμν μ§ κ²°μ ν΄μΌ νλ€.
DFS: κ·Έλν ν¬κΈ°κ° ν΄ κ²½μ° μ΄λ μ λλ‘ κΉμμ΄ νμνκ² λ μ§ κ°λ νκΈ° μ΄λ ΅κΈ° λλ¬Έμ μ μ¬μ©νμ§ μμ
BFS: λ³΄ν΅ μ¬μ©νλ λ°©μμ΄μ§λ§, μλ λ κ°μ§ λ¬Έμ κ° λ°μν μ μμ
μμ(politeness): νλμ νμ΄μ§μμ λμ€λ λ§ν¬ μ€ μλΉ μλ κ°μ μλ²λ‘ μ°κ²°λμ΄ μμ΄, κ°μ μλ²μ λν μμ²μ΄ λ§μμ§ μ μμ(ν΄λΉ μλ²μ λΆν λ°μ)
μ°μ μμ: λͺ¨λ μΉ νμ΄μ§κ° κ°μ μμ€μ νμ§μ΄λ μ€μμ±μ κ°μ§ μμ§λ§, νμ€μ BFSλ μ°μ μμκ° μμ΄ μ¬λ¬ μ²λ(νμ΄μ§ μμ / νΈλν½ μ λ±)μ λ°λ₯Έ μ°μ μμ νμ
λλ¬Έμ ν¬λ‘€λ§ μκ³ λ¦¬μ¦ κ΅¬ν μ BFSλ₯Ό μ¬μ©νλ, μ λ κ°μ§ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ λ―Έμμ§ URL μ μ₯μλ₯Ό νμ©ν μ μλ€.
λ―Έμμ§ URL μ μ₯μ
μ λ©΄ νλ‘ μ°μ μμ κ²°μ κ³Όμ μ μ²λ¦¬ν λ€, νλ©΄ νλ‘ ν¬λ‘€λ¬κ° μμ λ°λ₯΄κ² λμνλλ‘ λ³΄μ¦νμ¬ μμ(politeness)μ μ°μ μμ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
μ°μ μμ
ν¬λ‘€λ¬ μ μ₯μμλ μ€μν νμ΄μ§λ₯Ό λ¨Όμ μμ§νλλ‘ νλ κ²μ΄ μ’μλ°, μ΄λ₯Ό μν΄μ μμ κ²°μ μ₯μΉλ₯Ό μΆκ°ν μ μλ€. μμ κ²°μ μ₯μΉλ μ μ©μ±μ λ°λΌ URL μ°μ μμλ₯Ό λλ λλ νμ΄μ§λν¬ / νΈλν½ μ / κ°±μ λΉλ λ± λ€μν μ²λμ λ°λΌ URL μ°μ μμλ₯Ό μ νλλ‘ νλ€.
μμ κ²°μ μ₯μΉ(prioritizer): URLμ μ λ ₯μΌλ‘ λ°μ μ°μ μμ κ³μ°
ν: μ°μ μμλ³λ‘ ν νλμ© ν λΉ
ν μ νκΈ°: μμ νμμ μ²λ¦¬ν URLμ κΊΌλ΄λ μμ μν, μμκ° λμ νμμ λ μμ£Ό κΊΌλ΄λλ‘ μ€κ³
μμ(politeness)
μμ(politeness) λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μ λμΌ μΉ μ¬μ΄νΈμ λν΄μλ ν λ²μ ν νμ΄μ§λ§ μμ²ν΄μΌ νλ€. λ―Έμμ§ URL μ μ₯μλ₯Ό μ€κ³ν λ, λ€μκ³Ό κ°μ μ»΄ν¬λνΈλ€λ‘ ν΄λΉ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
ν λΌμ°ν°: κ°μ νΈμ€νΈμ μν URLμ΄ μΈμ λ κ°μ νλ‘ λΌμ°ν λλλ‘ λ³΄μ₯
맀ν ν μ΄λΈ: νΈμ€νΈ μ΄λ¦κ³Ό ν μ¬μ΄μ κ΄κ³λ₯Ό μ μ₯νλ ν μ΄λΈ
FIFO ν: κ°μ νΈμ€νΈμ μν URLμ κ°μ νμ 보κ΄(νΈμ€νΈ λ³λ‘ νλ₯Ό μμ±νμ¬ κ΄λ¦¬)
ν μ νκΈ°: νλ€μ μννλ©΄μ νμμ URLμ κΊΌλ΄μ΄ μ§μ λ μμ μ€λ λμ μ λ¬
μμ μ€λ λ: μ λ¬λ URLμ λ€μ΄λ‘λνλ μμ μν
μΉμ¬μ΄νΈ νΈμ€νΈλͺ κ³Ό λ€μ΄λ‘λ μν μμ μ€λ λ μ¬μ΄μ κ΄κ³λ₯Ό μ μ§νλ©΄μ, κ° μμ μ€λ λλ λ³λ FIFO νλ₯Ό κ°μ§κ³ , ν΄λΉ νμμ κΊΌλΈ URLλ§ λ€μ΄λ‘λνλλ‘ μ€κ³ν μ μλ€.
HTML λ€μ΄λ‘λ
HTML λ€μ΄λ‘λμμλ μ±λ₯μ μ΅μ ννκΈ° μν΄ μ¬λ¬ κ°μ§ λ°©λ²μ μ¬μ©ν μ μλ€.
Robots.txt μΊμ±: ν¬λ‘€λ¬κ° μμ§ν΄λ λλ νμ΄μ§ λͺ©λ‘λ€μ΄ μ‘΄μ¬νλ
Robots.txt
νμΌμ μ¬λ¬ λ² λ€μ΄λ‘λνλ κ²μ νΌνκΈ° μν΄, μ£ΌκΈ°μ μΌλ‘ λ€μ΄λ°μ μΊμμ μ μ₯νλ λ°©λ²μ μ¬μ©ν μ μλ€.λΆμ° ν¬λ‘€λ§: ν¬λ‘€λ§ μμ μ μ¬λ¬ μλ²μ λΆμ°νμ¬ μν
λλ©μΈ μ΄λ¦ κ²°κ³Ό μΊμ: λλ©μΈ μ΄λ¦ λ³νκΈ°μμ λ°μ κ²°κ³Όλ₯Ό μΊμμ μ μ₯
μ§μμ±: ν¬λ‘€λ§ λμ μλ²μ μ§μμ μΌλ‘ κ°κΉμ΄ μλ²μ μμΉν ν¬λ‘€λ¬ μ¬μ©
짧μ νμμμ: μΉ μλ²λ νμ μλ΅μ λΉ λ₯΄κ² νμ§ μκΈ° λλ¬Έμ μ΅λ μΌλ§λ κΈ°λ€λ¦΄μ§ κ²°μ νλ νμμμμ μ€μ
λν λ€μ΄λ‘λ μ μμ μ±λ μ€μνκΈ° λλ¬Έμ μλμ λ°©λ²μ μ¬μ©ν μ μλ€.
μμ ν΄μ: λ€μ΄λ¬λ μλ²λ€μ λΆν λΆμ° μ μ©μ μ¬μ©
ν¬λ‘€λ§ μν λ° μμ§ λ°μ΄ν° μ μ₯: μ₯μ λ°μ μ μ½κ² 볡ꡬν μ μλλ‘ μ§μμ μ μ₯μ₯μΉμ κΈ°λ‘
μ°Έκ³ μλ£
Last updated
Was this helpful?