goodthings4me.tistory.com
■ 파이썬으로 네이버 블로그 항목들 추출하기
- naver.com에서 'askdjango' 검색 후 블로그 섹션 하단의 '블로그더보기' 클릭
- 해당 URL에 대해 최소 조합 파라미터로 다시 조합
https://search.naver.com/search.naver
?
date_from=
&date_option=0
&date_to=
&dup_remove=1
&nso=
&post_blogurl=
&post_blogurl_without=
&query=askdjango
&sm=tab_pge
&srchby=all
&st=sim
&where=post
&start=1
# 최소 조합
&query=askdjango
&where=post
&start=1
▷ 한 페이지만 추출 해보기
requests, BeautifulSoup, css selector 등을 사용해서 블로그 항목 추출
import requests
from bs4 import BeautifulSoup
def naver_blog_search1(q):
url = 'https://search.naver.com/search.naver'
params = {
'query': q,
'where': 'post',
'start': 1,
}
html = requests.get(url, params = params).text
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.select('#elThumbnailResultArea .sh_blog_title'):
print(tag.text, tag['href'])
naver_blog_search1('askdjango')
▷ 각 페이지 대상 블로그 추출하기
- 페이지별 크롤링을 위한 파라미터 start 값 변경을 위해 params dict를 만들고,
- 블로그 list를 저장할 dict(순서있는 dict) 객체를 만들어서 검색된 결과를 저장
- 생성된 dict 객체에 동일한 블로그 list가 대입되지 않도록 if문 추가
- 추출할 페이지 번호를 인자로 받는 추출 함수로 만들어서 사용해보기
import requests
from bs4 import BeautifulSoup
from collections import OrderedDict
from itertools import count
def naver_blog_search2(q, max_page = None):
url = 'https://search.naver.com/search.naver'
post_dict = OrderedDict() # 순서있는 dict
# itertools의 count로 페이지 번호 지정 및 무한 생산
for page in count(1):
params = {
'query': q,
'where': 'post',
'start': (page - 1) * 10 + 1, # 1, 11, 21, ... 101
}
#print(params)
html = requests.get(url, params = params).text
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.select('#elThumbnailResultArea .sh_blog_title'):
if tag['href'] in post_dict:
return post_dict
post_dict[tag['href']] = tag.text
if max_page and page >= max_page:
break
return post_dict
result = naver_blog_search2('AskDjango', 2)
print(len(result)) # 20
▷ 블로그 posting 날짜 포함하는 코드
import requests
from bs4 import BeautifulSoup
def naver_blog_search3(query, page_nums):
url = 'https://search.naver.com/search.naver'
post_dict = dict()
page_num = (page_nums * 10) - 9
for page in range(1, page_num + 1, 10):
params = {
'query': query,
'where': 'post',
'start': page,
}
html = requests.get(url, params = params).text
soup = BeautifulSoup(html, 'html.parser')
for tag in soup.select('#elThumbnailResultArea .sh_blog_top dl'):
tag_href = tag.find(class_ = 'sh_blog_title')['href']
tag_title = tag.find(class_ = 'sh_blog_title')['title']
tag_date = tag.find(class_ = 'txt_inline').text
print('{} : {} / {}'.format(tag_href, tag_title, tag_date))
post_dict[tag_href] = tag.text + '/' + tag_date
return post_dict
result = naver_blog_search3('askdjango', 2)
print('포스트 건수 : {}'.format(len(result)))
# 포스트 건수 : 20
[실행 결과]

블로그 인기글
엑셀 시트 분리 저장 - 엑셀 파일의 시트를 분리하여 저장하기
엑셀을 사용하다 보면 엑셀 시트를 분리해서 저장해야 할 때가 있다. 최근에도 이런 경우가 발생하여 구글링 후 엑셀 시트 분리 업무를 수행하고 내친김에 다른 사람들도 사용할 수 있도록 파이썬 tkinter로 프로그램으로 만들어 보았다. Excel Sheets 분리 저장하는 프로그램(with 파이썬 Tkinter) ※ 프로그램 다운로드(네이버 MYBOX에서 공유) : ExcelSeparateSheets.zip ▶ 프래그램을 실행하면 다음과 같이 초기 화면이 보인다. 찾아보기 : 엑셀 파일이 있는 폴더를 선택한다. (프로그램이 있는 최상위 디렉터리가 열린다) 실행하기 : 프로그램 실행 버튼 상태 변경 순서 : 실행전 → 실행 중 → Sheet "OOO" 분리 저장 중 → 실행 완료 실행 결과 확인 : 엑셀 파..
goodthings4me.tistory.com
폐업 신고 절차와 부가가치세 신고하는 방법
폐업 신고 시 세무서 안 가고 온라인으로 신고하는 방법인 '국세청 홈택스를 이용하여 폐업 신고하는 절차와 폐업 후 해야 하는 부가가치세 신고, 인건비 저리, 종합소득세 신고 등에 대해 포스팅합니다. 폐업 신고 시 홈택스 이용하는 방법과 부가가치세 등 신고 절차 여러가지 사유로 폐업을 해야 할 때, 예전에는 세무서를 방문해야 했지만 국세청 홈택스가 생긴 이후에는 사업자 등록이나 폐업 등을 인터넷으로 할 수가 있게 되었습니다. 특히, 코로나 시국인 요즘은 더더욱 온라인 신청 업무가 더 활성화되었죠. 폐업을 한다는 것 자체가 우울한 일인데, 발품을 파는 것보다는 커피 한잔 하면서 인터넷으로 간단하게 처리하는 게 좋을 듯하여 그 절차를 올려봅니다. 폐업은 폐업 신고와 함께 폐업 후 절차까지 모두 마쳐야 불이익이..
goodthings4me.tistory.com
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #5 (0)
2020.10.21
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #4 (0)
2020.10.20
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #2 (0)
2020.10.16
[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #1 (0)
2020.10.15
[python] 파이썬 알고리즘 - 별표 찍기 (0)
2020.10.14
댓글