일하는 도중에 중간중간 끝내려니깐 졸립다.
그래도, 열심히 해봐야 겠다.
어제는 진짜 쉬웠다.
걍 알려주는거 나열.
오늘은 나열이라기 보다는 생각해서 채워넣기 였다.
여기까지 와서 내가 왜 코딩을 빡쳐하는지 기억해냈다.
나는, 손이 덤벙대는 편이다.
그래서, 오탈자를 많이 내는데- 아, 오늘 print 빼먹고 " "빼먹고, [ ] 잘못 쓰고 난리도 아니었다.
그래도 이건 하다보면 익숙해 지겠지 싶다...
오늘은 어제보다 비교적 간단하다.
그냥 기사에서 필요한 정보 뽑기다.
inspect > copy selector
이것만 계속 반복하면서 필요한거 찾고 필요한데 넣어서 크롤링 하는 작업이다.
그런데 왜 오래걸렸나...
바로, 강의에 나오는 페이지 정보와 내가 보는 사이트의 정보가 달랐다!!!
for article in articles:
title = article.select_one('dl > dt > a')
위의 for 문을 쓰면서 기사의 제목을 뽑아 와야 한다.
수업 중에 나온것을 dl> dt> a
근데, 내 페이지에 뜬것은?
dl이 없다!!!
그래서 뭘 했냐...
그냥, 계속 copy selector해서 공통분모를 찾고, 그 위로 가고, 범위를 다시 찾아보고- 여기에 커서 대면 여기가 퍼렇게 뜨고 이거를 다 해서- 결국 찾았다.
이 이후에도 계속 마찬가지였다.
url은 그나마 괜찮았다. href 추출하면 되었다.
하지만, 언론사 이름도 마찬가지로 수업에서 나온
'dd.txt_inline > span._sp_each_source' 같은 줄은 못찾아서 또 일일이 하나하나 대입하면서 찾아냈다.
그래서 결국 완성 한것은,
for article in articles:
title = article.select_one("div.news_wrap.api_ani_send > div > a").text
url = article.select_one("div.news_wrap.api_ani_send > div > a")['href']
comp = article.select_one('a.info.press').text.split(' ')[0].replace('언론사',' ')
다행히 잘 돌았다! 만세!
이번 과제는 이미지 소스 엑셀파일에 추가하는것이었다.
아까, 이거저거 대입해봐서 그런지
이번에는 금방 찾아서 과제는 ㄹㅇ 금방 끝났다.
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
from openpyxl import Workbook
wb = Workbook()
ws1 = wb.active
ws1.title = "articles"
ws1.append(["제목", "링크", "신문사", "썸네일"])
url = "https://search.naver.com/search.naver?&where=news&query=추석"
driver.get(url)
req = driver.page_source
soup = BeautifulSoup(req, 'html.parser')
articles = soup.select("#main_pack > section.sc_new.sp_nnews._prs_nws > div > div.group_news > ul > li")
for article in articles:
title = article.select_one("div.news_wrap.api_ani_send > div > a").text
url = article.select_one("div.news_wrap.api_ani_send > div > a")['href']
comp = article.select_one('a.info.press').text.split(' ')[0].replace('언론사',' ')
thumb = article.select_one('div > a > img')["src"]
ws1.append([title, url, comp, thumb])
wb.save(filename='articles.xlsx')
driver.quit()
과제 코딩까지 잘 끝냈다.
첨부파일 엑셀 만드는 것은 정말 유용해서 일할때 자주 쓸거 같다. ㅎㅎ
물론 이메일도 유용하게 쓸수 있을거 같지만 개인 이메일은 일일이 그렇게 보내는 것인 오히려 손이 많이 가니,
나중에 단체 메일 보낼때 써볼 예정이다.
(개인정보가 있어서 코딩은 여기 안 올림)
3일차 하러 가야지.