정구리의 우주정복

Python 웹 크롤링 (Web Crawling) 06. 구글 크롤링 본문

PYTHON/STUDY

Python 웹 크롤링 (Web Crawling) 06. 구글 크롤링

Jungry_ 2020. 4. 2. 23:28
반응형

공부용이라 소스코드 들쭉날쭉할 수 있음 (참고할 사람들은 소스코드 유의깊게보기)

참고는 프로그래머 김플 스튜디오 유튜브

 

오늘은 맨날 네이버만 크롤링 하다가 구글을 크롤링 해볼거당

야호

 

웹 크롤링 3번 게시글을 참고하면 이번께 더 쉬울듯


1. 웹 사이트 분석하기

구글에 파이썬 검색

구글에 들어가 파이썬 이라고 검색을 해보면

세상에서 제일 복잡한 url 이 나온다 , 이렇게 복잡하면 분석하기가 힘듬

 

이때 search?q = '. . . ' 여기 부분이 실질적으로 검색을 하는 부분인데 이 뒷부분을 모두 지우고 검색을 해보쟈

 

url 바뀜

놀랍게도 url 이 바뀌었지만 검색 결과는 똑같다 ! 이렇게 우리는 기본 url 을 얻어버림

 

html 코드를 분석해보자 

 

code 분석

 

div class = r 안에 내가 원하는 href 와 title 을 가지고 있다 따라서 r을 잘 가져오면 될듯 

 


2. 코드 작성

from urllib.parse import quote_plus
from bs4 import BeautifulSoup
from selenium import webdriver

search = input("검색어를 입력하세요 : ")
url = 'https://www.google.com/search?q='
newUrl = url + quote_plus(search)

driver = webdriver.Chrome()
driver.get(newUrl)

html = driver.page_source #열린 페이지 소스 받음
soup = BeautifulSoup(html)

r = soup.select('.r') #클래스 r을 선택 select 로 가져오면 list 형식임

for i in r :
    print(i.select_one('.LC20lb.DKV0Md').text) #select 를 안쓰는 이유는 select 를 쓰면 list 로 불러와져서 text 를쓸 수 없다
    print(i.a.attrs['href']) #a 태그의 href 속성 가져오기
    print()

 

별다른 설명은 하지 않겠다 !! (웹크롤링 3번 게시글과 이때가지 한 게시글들과 유사함)

select_one 을 사용하는 이유 : select 를 쓰면 list 형태로 가져오게 되는데 list 형태는 text 를 사용하지 못한다 

a 태그의 hret 를 가져오려면 i.a.attrs['href'] 이렇게 써주면 됨 

 

이번껀 어렵지 않았다 ! selenium 을 좀 더 많이 사용해봐야지

 

 

반응형
Comments