본문 바로가기

Python

네이버 홈 section_navbar 크롤링 초간단

우선 웹 서버에다가 웹 페이지를 보내달라고 요청하기 위해 urllib.request를 import 한다.

url = 'https://www.naver.com/'을 요청하면 DNS에서 대응되는 IP주소에 있는 요청 페이지를 띄워준다.

main 함수에서 naver함수를 호출하면 첫 출에 with as 가 보이는데 열어 놓은 url을 인터프리터한테 닫으라고 하는 것이다.

with 안에 들여쓰기된 부분이 종료되면 해당 url가 닫히게 된다.

열린 url에 있는 코드를 읽어 html 변수에 넣는다.

for문에서는 태그 이름이 span이고 class가 an_text인 모든 것들을 찾아 prnt에 하나씩 넣는다.

태그를 제외한 알맹이만 뽑아내고 싶을 때는 해당 객체에 콤마를 붙이고 get_text()를 사용한다.


import urllib.request as ur
from bs4 import BeautifulSoup
url='https://www.naver.com/'
def naver():
with ur.urlopen(url) as response: #with 블록을 벗어나는 순간 열려있던 url이 자동으로 닫힌다.
html = response.read() #열린 url(네트워크 상의 자원)을 읽음
soup = BeautifulSoup(html, 'html.parser') #인자1:html내용, 인자2:html 해석기, url을 해석해서 soup에 전달
#class가 date인 dl 태그 안의 class가 tahoma인 span태그를 모두 찾는다.
for prnt in soup.find_all("span",{"class":"an_txt"}):
print(prnt.get_text(" ", strip=True), end='\n') #찾은 객체의 문자를 얻고 공백을 없앤다.
#prnt=soup.find_all("span", {"class": "an_txt"})
print("=====================way2=====================")
for prnt in soup.find_all("span",{"class":"an_txt"}):
print(prnt.get_text())
words = soup.find_all("span",{"class":"an_txt"})
print("=====================way3=====================")
for i in range(len(soup.find_all("span",{"class":"an_txt"}))):
print(words[i])
print(words[i].get_text())
if __name__ == '__main__':
naver()