-
문자로 된 티스토리 블로그 주소(포스트 주소) 파이썬 크롤링 방법코딩 연습/파이썬 크롤링 2022. 6. 9. 21:52
티스토리 블로그 글의 주소는 숫자와 문자로 설정할 수 있다. 제목이 문자로 된 블로그 주소에 대해 파이썬으로 크롤링하는 방법을 알아보려고 한다.
파이썬으로 문자로 된 블로그 주소의 제목 등 크롤링해보기
문자로 된 티스토리 블로그 주소는 "https://블로그아이디.tistory.com/entry/글제목" 형식으로 표시가 된다.
티스토리 블로그의 제목을 추출하기 위해 "Category"(또는 "분류 전체보기")를 클릭하던지 아니면 직접 "https://블로그아이
디.tistory.com/category"를 URL로 입력하면 하단의 페이지 번호(pagination)와 함께 블로그 글 목록(리스트)을 볼 수 있다.개발자 도구(F12)로 그 목록 부분을 확인해보면 <a> 태그에 블로그 글이 링크되어있다.
티스토리 블로그 개발자도구(F12) - 해당 링크를 클릭하면 블로그 페이지로 이동되고 블로그 내용을 볼 수 있는데 그 페이지에서 제목과 해당 글의 카테고리, 등록일자 등을 추출할 수 있다.
개발자도구(F12) - 즉, 페이지 번호가 있는 곳에서 for 문으로 페이지 번호를 변경하면서 순환시키고, 그 안에서 다시 for 문으로 각 페이지의 글 목록(<a href="블로그 주소">)을 순환시키면서 블로그 페이지의 데이터를 추출하면 된다.
[파이썬 크롤링 소스 코드]
import requests from bs4 import BeautifulSoup import openpyxl def get_tistoryTitle(pages): ## 추출한 티스토리 데이터 저장할 엑셀 wb = openpyxl.Workbook() ws = wb.active ws.cell(1, 1).value = 'page_no' ws.cell(1, 2).value = 'category' ws.cell(1, 3).value = 'title' ws.cell(1, 4).value = 'regist_date' ws.cell(1, 5).value = 'post_url' wb.save('tistory_title.xlsx') header = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \ (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', } row = 2 for page_no in range(1, pages + 1): url = f'https://4u4u.tistory.com/category/?page={page_no}' r1 = requests.get(url, headers=header) soup = BeautifulSoup(r1.text, 'html.parser') # 해당 페이지 내의 전체 포스트(글) posts = soup.select('#content > div.inner > div.post-item > a') print(f'전체 포스팅(글)수 : {len(posts)}') for post in posts: posts_url = 'https://4u4u.tistory.com' + post['href'] # print(posts_url) r2 = requests.get(posts_url, headers=header) soup2 = BeautifulSoup(r2.text, 'html.parser') category = soup2.select_one('#content > div.inner > div.post-cover > div > span.category') # 카테고리가 없을 경우 if not category: category = '' else: category = category.text.strip() # 블로그 제목 title = soup2.select_one('#content > div.inner > div.post-cover > div > h1') # 등록일자 regi_date = soup2.select_one('#content > div.inner > div.post-cover > div > span.meta > span.date') # 타이틀이나 등록일자가 아닌 경우 if not title or not regi_date: continue print(page_no) print(category) print(title.text.strip()) print(regi_date.text.strip()) ## 엑셀 저장 ws.cell(row, 1).value = page_no ws.cell(row, 2).value = category ws.cell(row, 3).value = title.text.strip() ws.cell(row, 4).value = regi_date.text.strip() ws.cell(row, 5).value = f'=HYPERLINK("{posts_url}", "{posts_url}")' wb.save('tistory_title.xlsx') row += 1 wb.close() if __name__ == '__main__': total_pages = 1 get_tistoryTitle(total_pages)
- 전체 몇 페이지인지 확인 후 total_pages = 00 변경하면 전체 블로그 글의 제목 등의 데이터를 추출할 수 있다.
[실행 결과]
전체 포스팅(글)수 : 10 1 Python/Crawling 티스토리 블로그 글 제목 추출 후 구글 사용자 유입 건수 대입 해보기 2022. 2. 4. 1 Python/Crawling 파이썬 스크래핑(크롤링) 데이터 sqlite3에 저장하기 2022. 1. 14. 1 Python/Crawling 11번가 실시간 쇼핑 검색어 추출해보기[with 파이썬] 2022. 1. 10. 1 Python/Etc VS Code 파이썬 가상환경 만들어서 사용하기 2022. 1. 9. . .
[저장된 엑셀 파일]
엑셀 파일 '코딩 연습 > 파이썬 크롤링' 카테고리의 다른 글
쇼핑몰 상품 2가지 옵션 조합 크롤링하기 (0) 2022.06.15 네이버 블로그의 전체 페이지 저장하기(방법 설명) (5) 2022.06.13 스마트 스토어 데이터 크롤링하여 sqlite3에 저장하기 (0) 2022.06.02 다음 뉴스 기사 제목 본문 크롤링 후 텍스트 저장 (0) 2022.06.01 온채널 도매 사이트 명예의전당 우수상품 리스트 (0) 2022.05.24