반응형
CRAWLING
- 웹 페이지에서 필요한 데이터를 추출해내는 작업.
- CRAWLING을 하는 프로그램을 Crawler라고 한다.
BeautifulSoup
- HTML파일을 BeautifulSoup객체로 만들 수 있다
- 변수 이름은 관습적으로 soup이라고 한다.
- html.parser는 BeautifulSoup객체에게 HTML을 분석하라고 지시하는 의미를 가지고 있다.
- html.parser는 파이썬 내장 클래스로 별도로 작성하지 않으면 자동으로 작동된다.
# 현재 페이지의 html 코드를 full_html에 저장한다.
full_html = driver.page_source
soup = BeautifulSoup(full_html, "html.parser")
index.html이라는 html파일로 BeautifulSoup 객체를 만들어준다.
soup = BeautifulSoup(open("index.html"), "html.parser")
태그 추출하기
soup.find()
- 태그를 이용하여 원하는 부분을 추출합니다.
- 처음 등장하는 태그가 적용됩니다.
- 태그의 name, attribut, value를 특정하여 찾을 수 있습니다.
▶ class_
- 매개변수에 값을 지정함으로써 특정 클래스를 가진 태그를 추출 할 수 있다.
- class라는 단어가 이미 사용되기 때문에 class뒤에 _를 붙여서 사용해야한다.
▶ get_text()
- BeautifulSoup 객체의 태그안의 텍스트만 추출한다.
tag = "<p class='example' id='test01'> Hello World! </p>"
soup = BeautifulSoup(tag)
# 태그 이름만 특정
soup.find('p')
# 태그 속성만 특정
soup.find(class_='example')
soup.find(attrs = {'class':'exmaple'})
# 태그 이름과 속성 모두 특정
soup.find('p', class_='example')
# 연속사용
# div태그의 title클래스 안의 p태그를 추출
soup.find("div", class_="title").find("p")
soup.find_all()
- 태그를 이용하여 원하는 부분을 추출합니다.
- 모든 태그가 적용됩니다.
- 태그의 name, attribut, value를 특정하여 찾을 수 있습니다.
soup.find_all("p")
soup.select()
CSS Selector로 tag객체를 찾아서 반환합니다.
특정 경로의 태그를 반환할 때 유리 합니다.
#태그 찾기
soup.select("title")
#특정 태그 아래에 있는 태그 찾기
soup.select("div a") #div 태그 아래에 있는 a 태그 찾기
#특정 태그 바로 아래에 있는 태그 찾기
soup.select("head > title")
soup.select("head > #link1") #아이디로 태그 찾음
soup.select("div[class='service'] > p")
soup.select("p[class='tag_type'] > sapn")
#태그들의 형제 태그 찾기
soup.select("#link1 ~ .sister")
soup.select("#link1 + .sister")
#CSS class로 태그 찾기
soup.select(".sister")
#ID값으로 태그 찾기
soup.select("#link1")
soup.select_one()
타겟한 태그들 중 가장 첫번째 값을 반환합니다.
#brother class를 가진 태그들 중에 첫 번째 값만 추출할 때
print(soup.select_one(".brother"))
>> <a class="brother" href="http://example.com/elsie" id="link1">john</a>
반응형
'Python' 카테고리의 다른 글
[Python] Anaconda 가상환경 생성 (0) | 2022.09.21 |
---|---|
[Python] CRAWLING - Element Access (0) | 2022.09.16 |
[python] WEB CRAWLING (1) | 2022.09.08 |
[python] Module (0) | 2022.09.06 |
[python] Package (0) | 2022.09.06 |