[WebCrawling] 웹사이트를 직접 분석해보자 -2편

2022. 12. 4. 12:00·활동내역.zip/개인
728x90

Type: 데이터 수집 / 분석

주제: Web Crawling

사용 IDE: IntelliJ IDEA

사용 언어: Python

사용 패키지: bs4 - BeautifulSoup, requests - get

GitHub Link: https://github.com/TMInstaller/WebCrawling_Myblog

더보기
 

GitHub - TMInstaller/WebCrawling_Myblog: WebCrawling project demo

WebCrawling project demo. Contribute to TMInstaller/WebCrawling_Myblog development by creating an account on GitHub.

github.com

이전 편 보고 오기

 

[WebCrawling] 내 블로그의 정보를 직접 분석해보자 -1편

Type: 데이터 수집 / 분석 주제: Web Crawling 사용 IDE: IntelliJ IDEA 사용 언어: Python 사용 패키지: bs4 - BeautifulSoup, requests - get GitHub Link: https://github.com/TMInstaller/WebCrawling_Myblog 더보기 GitHub - TMInstaller/WebCraw

time-map-installer.tistory.com


설계 - 어떤 기능을 추가할까?

이번 편의 목표는 다음과 같다

목표: 메인 화면이 아니라 특정 키워드를 검색했을 때 나오는 결과에 대한 정보를 수집해보자

결과화면의 데이터를 긁어올 예정

이번 편에서는 블로그에서 키워드: Python 을 검색했을 때 나오는 결과들에 대한 정보를 출력해볼 예정이다

코드 작성

1. 검색할 때 나타나는 블로그의 url 가져오기

2. 개발자 모드를 통해 살펴본 위치의 정보 저장

3. 2번에서 더 세부적인 위치를 찾아서 저장

4. 가장 세부적인 위치를 찾아서 출력해보기


1. 검색 할 때 나타나는 블로그의 url 가져오기

url = "https://time-map-installer.tistory.com/search/"
keyword = "Python"
response = get(f"{url}{keyword}")

 Python을 검색했을 때 다음과 같이 나타나므로 코드를 위와 같이 작성해준다

f"{변수명}{변수명}" = "값+값" 이므로 합쳐진 url을 변수에 저장한다


2. 개발자 모드를 통해 살펴본 위치의 정보 저장

# else: 
    soup = BeautifulSoup(response.text, 'html.parser')
    keys = soup.find_all('div', class_='inner')

class가 inner인 div의 정보를 가져올 것이기에 위와 같이 작성하였다


3. 2번에서 더 세부적인 위치를 찾아서 저장

# key_posts = key_section.find_all('div', class_='post-item')
for post in key_posts:
    span = post.find('a')

4. 가장 세부적인 위치를 찾아서 출력해보기

# for post in key_posts:
#    span = post.find('a')
    thum = span.find('span', class_='thum')
    title = span.find('span', class_='title')
    excerpt = span.find('span', class_='excerpt')
    meta = span.find('span', class_='meta')
    print(thum, title, excerpt, meta)
    print('//////////////////')
화살표 부분 가져오는 코드 작성

0. 전체 코드 / 실행 결과

# main.py
from requests import get
from bs4 import BeautifulSoup

# 검색 시 작동 하는 url link 가져오기
url = "https://time-map-installer.tistory.com/search/"
# 검색 시 입력 될 키워드 입력하기
keyword = "Python"
# 두 값을 합쳐 검색 시 나오는 url link 설정하기
response = get(f"{url}{keyword}")
if response.status_code != 200:
    print("페이지를 불러올 수 없습니다", response.status_code)
else:
    soup = BeautifulSoup(response.text, 'html.parser')
    # 찾을 정보를 keys 변수에 새로 저장
    keys = soup.find_all('div', class_='inner')
    for key_section in keys:
        # key posts에 div 태그의 post-item들만 불러오기 위한 준비
        key_posts = key_section.find_all('div', class_='post-item')
        for post in key_posts:
            # 그 안에서 a 태그 안의 모든 것을 가져올 준비
            # a 태그가 하나라 find_all 대신 find 사용
            span = post.find('a')
            # a 태그 안에 각각의 태그들이 하나씩이면 find, 여러개면 find_all로 불러오기
            thum = span.find('span', class_='thum')
            title = span.find('span', class_='title')
            excerpt = span.find('span', class_='excerpt')
            meta = span.find('span', class_='meta')
            # 출력하고 구분자로 나눠보기
            print(thum, title, excerpt, meta)
            print('//////////////////')

주석을 달아 둔 전체 코드와 실행결과이다

실제로 블로그에 keyword의 내용을 검색했을 때 나온 결과들이 나왔다

다음 편에서 계속됩니다

728x90
저작자표시 비영리 변경금지 (새창열림)

'활동내역.zip > 개인' 카테고리의 다른 글

[WebCrawling] 웹사이트를 직접 분석해보자 -4편  (0) 2022.12.05
[WebCrawling] 웹사이트를 직접 분석해보자 -3편  (0) 2022.12.05
[WebCrawling] 웹사이트를 직접 분석해보자 -1편  (0) 2022.12.04
[HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 2편)  (0) 2022.11.20
[HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 1편)  (0) 2022.11.20
'활동내역.zip/개인' 카테고리의 다른 글
  • [WebCrawling] 웹사이트를 직접 분석해보자 -4편
  • [WebCrawling] 웹사이트를 직접 분석해보자 -3편
  • [WebCrawling] 웹사이트를 직접 분석해보자 -1편
  • [HTML+CSS] 무작정 따라 만들어보기(쿠팡 footer만들기 2편)
ThreeLight
ThreeLight
ThreeLight Studio의 블로그, TimeMap.exe에 오신 것을 환영합니다.
  • ThreeLight
    TimeMap.exe
    ThreeLight
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • Checkpoint (1)
      • (3D)Dev Deep Dive (0)
        • Templates & Guides (9)
        • Frontend origin (9)
        • Backend origin (1)
        • TroubleShootings (4)
      • Development Study (95)
        • Frontend (36)
        • Backend (21)
        • CS(Computer Science) (2)
        • Background Knowledges (11)
        • Algorithm (2)
        • Mobile (3)
        • AWS (6)
        • Python (6)
        • MSW(MapleStoryWorlds) (8)
      • Coding Test (59)
        • 문제.zip (1)
        • BaekJoon_JavaScript (0)
        • Programmers_JavaScript (9)
        • BaekJoon_Python (23)
        • Programmers_Python (10)
        • Undefined_Python (3)
        • Programmers_SQL (13)
      • 활동내역.zip (43)
        • 개인 (21)
        • Techeer (12)
        • Bootcamp (7)
        • Hackathon (1)
        • TeamProjects (2)
      • 여기 괜찮네??(사이트 | App) (5)
      • 재미있는 주제들 (8)
      • 개발 외 공부 저장소 (11)
        • 생산운영관리 (3)
        • 생활속의금융 (6)
        • 경영정보시스템 (2)
  • 링크

    • TimeMap.dmg (Portfolio)
    • GitHub 바로가기
    • 오픈프로필(카카오톡)
    • Medium 바로가기
    • Disquiet 바로가기
    • LinkedIn 바로가기
  • 인기 글

  • 태그

    CSS
    Baek Joon
    Python
    JavaScript
    TypeScript
    SQL
    react
    programmers
    프로그래머스
    HTML
  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
ThreeLight
[WebCrawling] 웹사이트를 직접 분석해보자 -2편
상단으로

티스토리툴바