<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
		<id>http://dhlab.aks.ac.kr/~azuremei/wiki/index.php?action=history&amp;feed=atom&amp;title=%EC%84%A0%EB%AF%B8_%ED%8C%8C%EC%9D%B4%EC%8D%AC_0405_19%EC%9D%BC%EC%B0%A8</id>
		<title>선미 파이썬 0405 19일차 - 편집 역사</title>
		<link rel="self" type="application/atom+xml" href="http://dhlab.aks.ac.kr/~azuremei/wiki/index.php?action=history&amp;feed=atom&amp;title=%EC%84%A0%EB%AF%B8_%ED%8C%8C%EC%9D%B4%EC%8D%AC_0405_19%EC%9D%BC%EC%B0%A8"/>
		<link rel="alternate" type="text/html" href="http://dhlab.aks.ac.kr/~azuremei/wiki/index.php?title=%EC%84%A0%EB%AF%B8_%ED%8C%8C%EC%9D%B4%EC%8D%AC_0405_19%EC%9D%BC%EC%B0%A8&amp;action=history"/>
		<updated>2026-04-03T22:41:36Z</updated>
		<subtitle>이 문서의 편집 역사</subtitle>
		<generator>MediaWiki 1.27.1</generator>

	<entry>
		<id>http://dhlab.aks.ac.kr/~azuremei/wiki/index.php?title=%EC%84%A0%EB%AF%B8_%ED%8C%8C%EC%9D%B4%EC%8D%AC_0405_19%EC%9D%BC%EC%B0%A8&amp;diff=183&amp;oldid=prev</id>
		<title>Azuremei: 새 문서: &lt;pre&gt;   #web  ''' [파이썬 설치 시 자동으로 같이 포함되는 모듈이 아닌 외부 모듈을 설치하는 방법]  1)실행-emd  2) pip install beatifulsoup4 ''' #2.5) p...</title>
		<link rel="alternate" type="text/html" href="http://dhlab.aks.ac.kr/~azuremei/wiki/index.php?title=%EC%84%A0%EB%AF%B8_%ED%8C%8C%EC%9D%B4%EC%8D%AC_0405_19%EC%9D%BC%EC%B0%A8&amp;diff=183&amp;oldid=prev"/>
				<updated>2018-04-06T11:16:53Z</updated>
		
		<summary type="html">&lt;p&gt;새 문서: &amp;lt;pre&amp;gt;   #web  &amp;#039;&amp;#039;&amp;#039; [파이썬 설치 시 자동으로 같이 포함되는 모듈이 아닌 외부 모듈을 설치하는 방법]  1)실행-emd  2) pip install beatifulsoup4 &amp;#039;&amp;#039;&amp;#039; #2.5) p...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#web&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
[파이썬 설치 시 자동으로 같이 포함되는 모듈이 아닌 외부 모듈을 설치하는 방법]&lt;br /&gt;
&lt;br /&gt;
1)실행-emd&lt;br /&gt;
&lt;br /&gt;
2) pip install beatifulsoup4&lt;br /&gt;
'''&lt;br /&gt;
#2.5) python -m pip install --upgrade pip #업그레이드가 필요하다고 뜨는 경우&lt;br /&gt;
&lt;br /&gt;
#import bs4&lt;br /&gt;
#원래 설치되어있던 모듈이 아닌데&lt;br /&gt;
&lt;br /&gt;
#3) pip install selenium&lt;br /&gt;
&lt;br /&gt;
#import selenium&lt;br /&gt;
&lt;br /&gt;
#pip install : 파이썬에 설치되지 않은 모듈을 파이썬의 서버에서 불러와 설치하는 것&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
    웹 크롤링 web crawling&lt;br /&gt;
     - 인터넷 특정 페이지에서 데이터를 가져와 가공하는것&lt;br /&gt;
     - 파이썬에서의 크롤링 : 어떤 모듈을 사용해서 만드나요?&lt;br /&gt;
         1. request 모듈 : 크롬에서 페이지소스보기 &amp;gt; 원하는 정보를 그 안에서 찾을 수 있으면 간단하게 사용할 수 있는 모듈이다. 이 모듈도 사용하려면 pip install request 해아함&lt;br /&gt;
         2. selenium : 페이지 소스보기에 원하는 정보가 없을 때 &amp;gt; 데이터가 숨겨져 있는 경우 사용. 가상의 웹 브라우저를 이용하여 마치 사용자가 페이지에 접근하듯 사용&lt;br /&gt;
             &amp;gt;&amp;gt;가상의 웹 브라우저&amp;lt;&amp;lt;를 이용할 수 있는 모듈&lt;br /&gt;
        &amp;gt;&amp;gt;리퀘스트는 프로그램적으로만 페이지에 결과를 요ㅛ청함(프로그램이 페이지에 결과를 요청하는게 티가 남--&amp;gt;이럴 경우 결과를 재대로 주지 않는 페이지들도 있다.)&lt;br /&gt;
            (우리가 특정 사이트에 접속하는 것은 브라우저가 서버에 접근을 요청해서 서버가 허용한 값을 불러오는 것. 그러나 리퀘스트는?? 요청한 결과를 받을 때 요청하는 주체에 대한 정보전달도 같이 함.-나는 익플입니다/나는 크롬입니다&amp;gt;&amp;gt;리퀘스트는 -)&lt;br /&gt;
&lt;br /&gt;
        위 두 개 모듈은 페이지에 결과를 요청해서 데이터를 받아오는 기능을 하는 모듈&lt;br /&gt;
         3. beautifulsoup4 : html코드를 파싱하기 편한 모듈&lt;br /&gt;
             &amp;gt;파싱이란?&lt;br /&gt;
              - 어떤 데이터에서 내가 원하는 데이터를 '특정 패턴'이나 '순서'같은 걸로 추출하여 가공하는 것&lt;br /&gt;
            &amp;gt;&amp;gt;html같은 코드를 우리가 접근하기 편한 방식으로 보여주는것&lt;br /&gt;
         &lt;br /&gt;
        &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
from bs4 import BeautifulSoup # bs4에서 뷰티플수퓨만 임포트함 &amp;gt;&amp;gt; bs4라는 이름 싱략&lt;br /&gt;
from selenium import webdriver&lt;br /&gt;
&lt;br /&gt;
driver = webdriver.Chrome() #드라이버는 웹드라이버 안에 있는 크롬, &amp;gt;&amp;gt;크롴 클래스의 인스턴스 생성&lt;br /&gt;
&lt;br /&gt;
#크롬() 인스턴스 생성 시크롬드라이버 실행파일을 실행시켜서 가상의 크로믑라우저를 실행 &amp;gt;&amp;gt;드라이버 변수(인스턴스)는 새로 뜬 크롬브라우저 그 자체이다.&lt;br /&gt;
#&amp;gt;드라이버 변수를 이용해서 우리가 직접 클릭하고 페이지 이동하고 하는 것처럼 모든 행위를 코드화할 수 있다.&lt;br /&gt;
&lt;br /&gt;
#다나와 메인 페이지에서 쇼핑 특가혜택의 32개 제품 정보를 출력&lt;br /&gt;
&lt;br /&gt;
#get(url)&lt;br /&gt;
driver.get( &amp;quot;http://danawa.com&amp;quot; ) #url로 이동&lt;br /&gt;
&lt;br /&gt;
#2. 현재 페이지의 모든 내용을 가져와서 뷰티플숲 객체로 만들기(파싱하기 위해서&lt;br /&gt;
&lt;br /&gt;
soup = BeautifulSoup( driver.page_source.encode( &amp;quot;utf-8&amp;quot;, &amp;quot;ignore&amp;quot; ) , &amp;quot;html.parser&amp;quot;) #매서드&lt;br /&gt;
# driver.page_source : driver : 현재 내 페이지의 모든 소스&lt;br /&gt;
# 생성자에 전달한 driver.page_source.incode( &amp;quot;utf-8&amp;quot;, &amp;quot;ignore&amp;quot; )의 두 ??인 유티엪/이그노어&lt;br /&gt;
&lt;br /&gt;
#print(soup) # 재대로 전달됐는지 시험&lt;br /&gt;
&lt;br /&gt;
#원하는 데이터 파싱&lt;br /&gt;
#필요한 지식 : 1. html 코드 형태, 2) bs4 함수 다루는 방법&lt;br /&gt;
#가장 중요한 것 : 웹페이지는 페이지마다 html 구조가 다!!! 다르기 때문에 특정 페이지를 크롤링하여 파싱하려면 그 페이지를 '선 분석'하고 분석한 것을 코드화해야함&lt;br /&gt;
&lt;br /&gt;
#오타 주의하기(문자열은 오타나도 프로그램 실행에는 문제가 안돼서 발견 힘듦)&lt;br /&gt;
main = soup.find( &amp;quot;div&amp;quot; , {&amp;quot;class&amp;quot;:&amp;quot;main_middle_content&amp;quot;})&lt;br /&gt;
#숲이라는 변수가 페이지 내용을 다 불러왔다는 전제 하에 find는 태그(앞에는 무조건 태그가 온다.)=div main...에 속한 내용 전체를 다 가져온 것.&lt;br /&gt;
&lt;br /&gt;
count = 0 # 몇 번째 제품인지&lt;br /&gt;
&lt;br /&gt;
for ul in main.find_all(&amp;quot;ul&amp;quot;) : # 이전의 태그 내 ul태그를 모두 찾아서 리스트화하는것&amp;gt;유엘변수에 대입/퐈인드올 : 같은 이름의 태그가 여러개일 때 사용.&amp;gt;&amp;gt;포문에서 반복대입 가능&amp;gt;&amp;gt; 첫 번째 유엘을 해서 이 내용을 모두 유엘이라는 변수에 담는것&lt;br /&gt;
    for li in ul.find_all(&amp;quot;li&amp;quot;) : # ul태그 안의 모든 li태그를 반복대입&lt;br /&gt;
        print(li.text) #하나의 li 태그 안에서 모든 텍스트필드를 문자열로 반환&lt;br /&gt;
&lt;br /&gt;
        count+=1&lt;br /&gt;
        print(li.text.strip().replace(&amp;quot;\n&amp;quot;, &amp;quot; &amp;quot;))&lt;br /&gt;
#div class~~ [쇼킹특가혜택[ ]] 이것들을 모두 가져옴&lt;br /&gt;
        #유엘태그는 하나의 탭을 의미, 탭의 소스가 담겨있다. (총 4개)&lt;br /&gt;
        #li는 하나의 제품의 소스가 담겨있음 (1개의 유엘 안에 8개의 li가 있음) &amp;gt;&amp;gt;&amp;gt;li 8* ul 4 =32의 제품정보&lt;br /&gt;
#문자열로 반환이 된 출력물을 가공&lt;br /&gt;
 #strip : 공백 제거 / replace : a에서 찾은 모든 문자열을 b로 바꾼다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#카운트 변수를 추가함 // 카운트 어디썼는지 노트에서 찾아보기&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
html 소스&lt;br /&gt;
    tag : &amp;lt;a&amp;gt;&amp;lt;/a&amp;gt;태그 이름이 a, 열고닫기&lt;br /&gt;
    태그의 속성 : &amp;lt;a class=&amp;quot;abcd&amp;quot; /&amp;gt; #태그의 추가 내용이 없으면 바로 닫아도 됨 &amp;gt;&amp;gt;클래스가 속성, abcd는 값&lt;br /&gt;
    text 필드 : &amp;lt;a&amp;gt;나는 텍스트필드임&amp;lt;/a&amp;gt; 태그를 표현하는 &amp;lt;&amp;gt; 바깥에 있는 모든 글자(일반적으로 검정색)&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
driver.close() # 브라우저 종료&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
내가 관심있는 &lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Azuremei</name></author>	</entry>

	</feed>