정적크롤링 - 나도코딩
BeautifulSoup
BeautifulSoup은 requests로 통해 HTTP통신을 해서 가져고 온 HTML정보를 좀 더 편리하게 다루기 위한 라이브러리이다.
BeautifulSoup
soup.태그
첫번째 태그를 가지고 온다.
soup.태그.attrs
첫번째 태그에에 대한 속성을 가지고 온다.
soup.태그.[속성]
첫번째 속성에 대한 속성값을 가지고 온다.
soup.find("태그명",attrs = {"속성명":"값"})
해당 조건에 맞는 첫번재 태그를 가지고 온다.
soup.find().find()
=> find()로 찾은 정보에 다시 find()를 할 수 있다.
ex)find("div").find("a")
div 태그를 찾고 그 안의 a 태그를 찾는다.
find(attrs={"속성명":"값"})
이렇게 태그를 안줄수도 있다.
find_all("태그명", attrs = {"속성명":"값"})
해당 조건에 맞는 모든 태그를 가지고 온다.
리스트로 반환한다.
select()
css selector를 이용해서 태그를 가지고 온다.
태그나 속성, 값을 찾는데 정규식을 함께 사용할 수 있다.
soup.find(re.compile("패턴))
soup.find_all(re.compile("패턴"))
위에서 언급한 방법 이외에도 다양한 방법이 있다.
get_text()
=>이렇게 가지고 온 태그에 대해서 get_text()를 해주면 텍스트만 반환한다.
*참고
나도코딩 1시간 21분
startwith()
.content
request와 Beautifulsoup를 이용한 기본 템플릿
import requests as req
from bs4 import BeautifulSoup as BS
url = "https://www.naver.com/"
res = req.get(url)
res.raise_for_status()
soup = BS(res.text, "lxml")
get과 post
get방식
누구나 볼수 있게 querystrig으로 url에 적어서 보낸다.
https://www.aaasddad.com/np/search?q=%0&page=3&rocketAll=fals
querystrig은 url에서 ?로 시작한다.
querystrig의 값은 딕셔러니와 비슷하다. 키와 값으로 이루어져 있다.
위의 URL에서 page=3이라는 거은 세번째 페이지라는 것이다. 이 숫자를 1로 바꾸어주면 첫번째 페이지로 이동한다.
get은 한번 보낼때 보낼 수 있는 데이터 양에 제한이 있다.
큰 데이터를 보낼수 없다.
post방식
HTTP통신시 바디에 숨겨서 보내는 방식
아이디 패스워드를 누구나 볼수 있게 보낼수는 없다. 데이터에 제한이 없다.