User Agent
- HTTP 요청을 보내는 디바이스와 브라우저 등 사용자 s/w의 식별 정보를 담고 있는 request header의 한 종류.
- 보통 http 요청 에러 발생시 요청을 보낸 사용자 환경을 알아보기 위해 사용
기본 형태 : User-Agent: <product> / <product-version> <comment>
ex) 크롬의 경우
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
활용 : User Agent 정보를 기반으로 특정 브라우저에서만 다르게 동작하도록 하거나 할 때 등
BeautifulSoup4 진행
BeautifulSoup4 설치 및 기본 활용
터미널에서 "pip install beautifulsoup4" 를 입력해서 파일들을 받는다.
추가로 lxml도 설치. (pip install lxml)
lxml ? python에서 주로 이용되는, xml, html 등 해석하는 parser
BeautifulSoup를 이용해서, 네이버 웹툰 페이지에서 title 가져오기
import requests
from bs4 import BeautifulSoup
url = "https://comic.naver.com/webtoon/weekday"
res = requests.get(url)
res.raise_for_status()
soup = BeautifulSoup(res.text, "lxml") # 가져온 html파일을 lxml을 이용해서 처리
print(soup.title)
print(soup.title.get_text() ) # html 태그빼고, text만 가져올 때
BeautifulSoup 사용하기 위해 import 하기 : from bs4 import BeautifulSoup
print(soup.a) # 첫번째 발견하는 <a> 태그 가져오기
print(soup.a.attrs) # 속성 가져오기
print(soup.a["href"]) # 특정 속성정보를 확인할 때
특정 태그 찾기
soup.find("a", attrs={"class": "Nbtn_upload"})
soup.find("li", attrs={"class":"rank01"})
찾은 태그 기준으로 다음 줄 확인하기 (개행 문자 등으로 안 나올 수도 있다)
rank1 = soup.find("li", attrs={"class": "rank01"})
print("s1", rank1.next_sibling)
print("s2", rank1.next_sibling.next_sibling)
결과 : 처음 sibling할 땐 안 나오고, 다시 한번 sibling 하니까 값을 가져옴.
찾는 위치 이동
얻은 값 출력 : rank1.get_text()
이전 찾기 : rank1.previous_sibling
찾은 항목의 부모 찾기 : rank1.parent
다음 조건에 맞는 다음/이전 항목 찾기 : rank1.find_next_sibling("li") / find_previous_sibling("li")
여러개를 가져올 땐, 's'있는 함수 사용 :
rank1.find_previous_siblings("li")
rank1.find_next_siblings("li")
# text로 찾기
toon1 = soup.find("a", text="찾으려는 text")
'프로그래밍&IT > 파이썬' 카테고리의 다른 글
[파이썬] 웹 스크래핑.5 - Selenium 기본 (0) | 2021.10.25 |
---|---|
[파이썬] 웹 스크래핑.4 - CSV 기본 (0) | 2021.10.24 |
[파이썬] 웹 스크래핑.3 - BeautifulSoup4 - 2. find_all [+ http 메소드:get,post] (0) | 2021.10.23 |
[파이썬] 웹 스크래핑.2 - 정규 표현식 (regular expression) (0) | 2021.10.21 |
[파이썬] 웹 스크래핑.1 - requests (0) | 2021.10.20 |