겉바속촉
[PYTHON] 파이썬_크롤링 본문
안녕하세요
겉바속촉입니다
!^^!
!!파이썬 시작하기!!
파이썬을 활용해서
크롤링을
해보도록 하겠습니다
너무너무 기대되는
크롤링
!!!!
크롤링
명언 사이트 활용하려고 합니다 ^____^
파이썬을 배우면서 크롤링을 빼놓을 순 없겠죠!!
1. 웹페이지를 가져올 줄 아는 것
2. html 코드내에서 필요로한 데이터를 추출해 올줄 아는 것
두가지가 중요합니다
F12 키를 눌러서 관리자 화면을 보도록할게요~
내부적으로 어떻게 되어있는지 코드들을 볼 수가 있습니다.
이런것들을 도와주는 것이 바로
BeautifulSoup
⇒ 웹 문서를 구성하는 HTML과 XML 문서에서 원하는 정보를 쉽게 추출할 수 있는 모듈을 모아 놓은 파이썬 패키지
우선 쉘에서 필요한 것들 설치
PS C:\python> python.exe -m pip install --upgrade pip
PS C:\python> pip install beautifulsoup4
다음과 같이 코드 작성했습니다:)
from bs4 import BeautifulSoup as bs
import urllib.request as req
# 웹 페이지(문서)를 가져와서 가공
url = 'https://quotes.toscrape.com/'
html = req.urlopen(url)
print(html)
url은 요런식인 거에요!!
그리고 실행시켜보니 객체가 출력되버리네요~
그래서 문자열로 읽어올게요:)
from bs4 import BeautifulSoup as bs
import urllib.request as req
# 웹 페이지(문서)를 가져와서 가공
url = 'https://quotes.toscrape.com/'
html = req.urlopen(url)
print(html.read())
오호...다음과 같이 나옵니다
그래서 이제 우리가 다루기 쉽게 바꿔주어야합니다.
코드 추가해서 실행
from bs4 import BeautifulSoup as bs
import urllib.request as req
# 웹 페이지(문서)를 가져와서 가공
url = 'https://quotes.toscrape.com/'
html = req.urlopen(url)
print(html.read())
print("*" * 100)
# 뷰티풀소프를 이용해서 피싱하기 좋은 상태로 변환
soup = bs(html.read(), 'html.parser')
print(soup)
근데 안되고 있습니다
이유가 뭘까요??
파일을 읽을 때에는 항상 파일 포인터가 있습니다.
파일을 읽으면 파일 포인터가 이동을 하는 데
다음 주석 처리한 저 print 명령으로 인해 이미 다 읽어버렸기 때문에
읽을 것이 없어서입니다.
지워주어야겠죠?~
다시 실행시켜보니 다음과 같이 출력이 잘 되고 있습니다!!
이렇게 가져오면 우리가 원하는 데이터를 가져오기에
식별부분에서 더 쉽기 때문에
작업이 더 용이하겠죠.
soup명령어들을 알아볼게요!!
soup.find_all(TAG_NAME) ==> 특정 태그(TAG_NAME)로 둘러싸인 요소를 찾아서 리스트로 반환
soup.find_all("head") ==> head로 둘러쌓인 내용 조회
soup.find_all("link") ==> link로 둘러쌓인 내용 조회
그리고 len을 주시면 몇개인지도 출력됩니다
# soup.find_all(TAG_NAME) ==> 특정 태그(TAG_NAME)로 둘러쌓인 요소를 찾아서 리스트로 변환
head = soup.find_all("head")
# print(head, len(head))
links = soup.find_all("link")
# print(links, len(links))
spans = soup.find_all("span", {"itemprop": "text"})
# print(spans, len(spans))
이제 우리가 가져오고 싶은 것들 가져와볼게요:)
딱!!! 명언 부분만!!! 가져오고싶습니다.
관리자 화면에서 분석해볼게요
다음 보니까 <span></span>으로 둘러싸여있네요
그래서 다음 코드를 넣어서 실행시켜봤습니다
그냥 "span"만 넣어서 찾으면 다음과 같이 필요없는 것들도 출력이 됩니다
그래서 다음과 같이 해준거에요:)
soup.find_all("span", {"itemprop": "text"}) ==> span태그로 된 것 중에서 itemprop 속성인 값이 text인 것 찾기
spans = soup.find_all("span", {"itemprop": "text"})
print(spans, len(spans))
for s in spans:
print(s.text)
10개가 있군요!!
이제 다음 코드 넣어서 명언만 출력해내기
from bs4 import BeautifulSoup as bs
import urllib.request as req
# 웹 페이지(문서)를 가져와서 가공
url = 'https://quotes.toscrape.com/'
html = req.urlopen(url)
# print(html.read())
# print("*" * 100)
# 뷰티풀소프를 이용해서 피싱하기 좋은 상태로 변환
soup = bs(html.read(), 'html.parser')
# soup.find_all(TAG_NAME) ==> 특정 태그(TAG_NAME)로 둘러쌓인 요소를 찾아서 리스트로 변환
head = soup.find_all("head")
# print(head, len(head))
links = soup.find_all("link")
# print(links, len(links))
#itemprop 속성 값으로 text를 가지는 span 태그를 모두 검색해서 리스트로 반환
spans = soup.find_all("span", {"itemprop": "text"})
# print(spans, len(spans))
for s in spans:
print(s.text)
짜잔!
'IT 일기 (상반기) > PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬_ 데이터 합계 및 평균 구하기 (0) | 2021.01.10 |
---|---|
[PYTHON] 파이썬_크롤링 실행 파일 (0) | 2021.01.08 |
[PYTHON] 파이썬_객체 지향 이론 (0) | 2021.01.07 |
[PYTHON] 파이썬_객체 지향 프로그래밍 (0) | 2021.01.07 |
[PYTHON] 파이썬_정렬 알고리즘 (병합정렬) (0) | 2021.01.07 |