https://colab.research.google.com/drive/1_c-iTBL4j5OpBQL9j7zwHyBKEMKdf6Ou#scrollTo=__GwirqEvPX9
## from urllib import request, 안막힘, 네이버
# (1)
# url을 불러온다. request() 함수
from urllib import request
from bs4 import BeautifulSoup
# (2)
# 창의 주소를 복사한다. 저장한다.
url="주소이름"
# (3)
# request로 주소속 모든 내용 읽는다.
# .urlopen 사용한다.
html = request.urlopen(url).read()
# (4)
# BeautifulSoup 사용, 틈틈히 한글이보인다.
# 글자를 이쁘게 만들어 주는 함수: BeautifulSoup
soup=BeautifulSoup(html,"html.parser")
#(5)
# 검색 메인 타이틀 1개만 보여준다.
soup.find_all("title")
#-> ex:[<title>우크라이나 : 네이버 뉴스검색</title>]
#(6)
# 뉴스제목 -> f12-> 제목은 class 뒤에임. 제목을 찾아준다.
title= soup.find_all(class_ ="news_tit")
# -> ex:class="news_tit"
# 첫번째 뉴스 제목만 나옴
#.text하면 글자만 나온다.
title[0].text
# -> ex: EU, '500조 투입' 우크라이나 재건 '마셜 플랜' 촉구
# (7)
# title의 전체 글자만 나온다.
[title[i].text for i in range(len(title))]
# (8)
# href : 속성이다.
[print(i.text,":",i.attrs["href"]) for i in title]
# title의 전체 글자만 나온다.
# for i in range(len(title)):
# print( title [i].text)
# href : 속성이다.
# for i in title:
# print(i.text,":",i.attrs["href"])
#(1)
urllib
#(4)
BeautifulSoup
#(8)
attrs["href"]
## import requests 사용시, 막혔을때 header 사용.
# (1)
# url을 불러온다. request() 함수
from urllib import request
from bs4 import BeautifulSoup
import requests
# (2)
# 창의 주소를 복사한다. 저장한다.
url="https://search.daum.net/search?w=news&nil_search=btn&DA=NTB&enc=utf8&cluster=y&cluster_page=1&q=bts"
# (3)
# 크롤링 하다 막혔을 때의 header 검색.
#user agent검색-> 나의 주소 확인 -> header로 입력
header = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/-----------"}
# (4)
# 다음은 막아나서 import requests 하고 get를 사용해야 한다.
# 직접 파라미터 넣어서 보내기
html = requests.get(url, headers=header)
# (5)
# BeautifulSoup 사용, 틈틈히 한글이보인다.
# 글자를 이쁘게 만들어 주는 함수: BeautifulSoup
# requests를 사용시 html.text로 작성해야한다.
soup=BeautifulSoup(html.text, 'html.parser')
# (6)
# 뉴스제목 -> f12-> 제목은 class 뒤에임. 제목을 찾아준다.
title= soup.find_all(class_ ="tit_main fn_tit_u")
title[0].text
#(4)
requests
-HTTP/1.1 요청를 보낼 수 있음
-요청 내용에 헤더, 폼 데이터, multipart 파일과 parameter를 포함해서 보낼 수 있음
※ urlib 모듈로 접근하면 서버 로그에 urllib로 접속한다는 정보가 고스란히 남게 되고 또한 자주 접근하는 패턴으로 차단될 리스크가 있습니다.
※ requests 모듈은 headers에 추가 정보를 담아서 보낼 수 있어서 크롬이나 파이어폭스 브라우저가 보내는 정보를 담아서 보낼 수 있어 차단될 가능성이 적어 requests 모듈을 사용할 것을 추천합니다.
## 네이버 검색기능추가하기
#(1)
url2 = input("검색어를 입력해 주세요: ")
#(2)
for j in range(1,3):
url1 = "https://search.naver.com/search.naver?where=news&sm=tab_pge&query="
url3 = "&start="
url = url1+url2+url3+str(j)
#(3)
html = requests.get(url)
soup=BeautifulSoup(html.text, 'html.parser')
title= soup.find_all(class_ ="news_tit")
#(4)
for i in title:
print(i.text,":",i.attrs["href"])
#(5)
print(f"{j}페이지입니다.")
print("--"*50)
print( )
참조&출처: