일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Android
- MVVM pattern
- LinkedList
- ubuntu python
- PYTHON
- 웹크롤링
- 안드로이드
- Apollo GraphQL
- java
- Data structure
- Design Pattern
- Apollo Server
- graphQL
- Dependency Injection
- Nexus GraphQL
- dagger-hilt
- 안드로이드 테스트
- Android test
- mvvm
- unit test
- 우분투 파이썬
- flutter
- Kotlin
- prisma
- 안드로이드 디자인패턴
- 유니티
- 파이썬 크롤링
- 자바
- 안드로이드 mvp
- 자바기초
- Today
- Total
Hun's Blog
[Python] 웹 크롤링 3 - 네이버 웹툰 제목 가져오기 본문
참고
파이썬 레시피 - 웹 활용 입문편을 공부하면서 정리한 내용
*BeautifulSoup + requests 를 활용해 네이버 웹툰의 제목을 가져와보자.
1. 스크립트 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
from bs4 import BeautifulSoup
from pprint import pprint
import requests
html.close()
#pprint(data1)
data2 = data1.findAll('a',{'class':'title'})
#pprint(data2)
title_list1 = []
for t in data2:
#pprint(title_list1)
title_list2 = [t.text for t in data2]
#pprint(title_list2)
data_list = soup.findAll('div',{'class':'col_inner'})
week_title_list = []
for divisionData1 in data_list:
divisionData2 = divisionData1.findAll('a',{'class':'title'})
#pprint(divisionData2)
title_list3 = [t.text for t in divisionData2]
#pprint(title_list3)
pprint(week_title_list)
|
--
1-1 requests.get(url) , BeautifulSoup(html.text, 'html.parser'), close()
-> requests.get() 메소드와 , BeautifulSoup() 변수를 선언하여 네이버 웹툰 페이지 소스를 받아온다.
-> requests.close()
-> 현재 예제에서는 한번 소스를 받고 더이상 사용되지 않기 때문에 close() 메소드로 connection을 종료한다.
--
1-2 data1 = soup.find('div',{'class':'col_inner'}
-> find() 메소드에 'div',{'class':'col_inner'} 입력
-> 클래스명이 col_inner 인 div 태그를 찾아 반환하여 data1변수에 담는다.
--
1-3 data2 = data1.findAll('a',{'class':'title'})
-> findAll() 메소드에 'a',{'class':'title'} 입력
-> 클래스명이 title 인 a 태그를 모두 가져와 반환하여 data2 메소드에 담는다.
--
data2 는 findAll 로 리스트를 받아와 담겨져있으므로 배열로 각각의 태그a가 저장되어있는 것을 확인할 수 있다.
1-4
title_list1 = []
for t in data2:
title_list1.append(t.text)
-> data2 를 for문으로 돌면서 각각의 태그 a를 .text 로 태그 내부의 text를 뽑아낸다.
-> 위에서 생성한 title_list1 배열에 순차적으로 추가한다.
--
현재까지는 월요일의 웹툰 제목을 가져오는데 성공하였다.
[div.col_inner 를 검사]-> [웹툰표시영역 find] -> [해당 영역의 모든 title findAll] -> [for문 제목 추출]
예제의 목표는 모든 요일의 웹툰 제목을 가져와서 요일별로 리스트에 담는것이다.
div.col_inner 를 검사하는 흐름을 6번 더 반복해서 진행하고 요일별로 구분해보도록 하자.
--
1-5 data_list = soup.findAll('div',{'class':'col_inner'}
-> findAll() 메소드를 사용해서 col_inner 클래스인 div 태그를 모두 가져와 data_list 변수에 담는다.
1-6
week_title_list = []
for divisionData1 in data_list:
divisionData2 = divisionData1.findAll('a',{'class':'title'})
title_list3 = [t.text for t in divisionData2]
week_title_list.appen(title_list3)
-> data_list를 for 문으로 돌면서 각각의 div태그를 findAll() 메소드를 사용하여 title클래스인 a 태그를 모두 가져와 divisionData2 에 담는다.
-> divisionData2를 다시 for문으로 돌면서 각각의 a태그의 text를 가져와 title_list3에 담는다.
-> week_title_list 에 title_list3 를 append 메소드로 추가한다.
-> append 로 추가하면 list 별로 구분되어서 저장된다.
'Language > Python' 카테고리의 다른 글
[Python] 웹 크롤링 6 - 1 to 50 봇 (0) | 2020.04.06 |
---|---|
[Python] 웹 크롤링 5 - selenium을 활용한 유튜브 키워드 검색하기 (0) | 2020.04.06 |
[Python] 웹 크롤링 4 - 네이버 웹툰 썸네일 가져오기 (0) | 2020.04.06 |
[Python] 웹 크롤링 2 - Python BeautifulSoup4, requests 설치 + 네이버 날씨 미세먼지 가져오기 (0) | 2020.04.05 |
[Python] 웹 크롤링 1 - Ubuntu 18.04.3 에서 Python 3.7.4 설치 (+APM) (0) | 2020.04.01 |