[기초]g_market 크롤링

BackEnd_Ash.log·2020년 2월 9일
0

크롤링

목록 보기
1/7

import request

from bs4 import beautifulsoup

크롤링 하는데 , 다양한 방법이 있다 .
그중에서 셀레니움을 사용하는 방법이 있지만 ,
가급적이면 셀레니움 사용하는것을 지양한다.

What is Selenium?

Selenium automates browsers. That's it! What you do with that power is entirely up to you. Primarily, it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) be automated as well.

위의 글은 셀레니움 홈피에서 가져온 글이다 .

그리고 속도도 느리다 .

그래서 나는 requests , beatifulsoup , json , re
이렇게 4개 정도 자주 쓰는것 같다. 그밖에는.. 잘 쓰지 않는다 .

import requests , json
import bs4 from BeatifulSoup

코드를 적기 전에 우선적으로 이정도만 미리 import 해준다.

request_header

header 부분은 F12 눌렀을때

여기 부분을 클릭하게 되면 header 가 나오게 된다.

requests_headers = {
   'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
   'Accept-Language': 'ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7',
   'Content-Type': 'text/html; charset=utf-8',
   'Accept-Encoding': 'gzip, deflate',
   'Cache-Control': 'max-age=0',
}

main_url

http://browse.gmarket.co.kr/search?keyword=맥북프로

url 을 가져올때 , 어느 부분 파일에 대한 header 를 클릭해서 url 을 가져와야하는건가 ?? 라는 생각이 들 수도 있다.
딱히.. 다른 방법은 없이 하나하나 선택해서 고르는 방법밖에 없는것 같다.

지금 현재 g_market 에는 url 전체 경로가 잘 나와있어서 ,

그대로 가져다가 쓰면 되지만 post 방식이라던지 ajax 로 된 페이지는
data 에 파라미터 내용을 딕셔너리로 만들어서 보내야 한다.
그 부분은 다른 사이트 하면서 이용해 볼것 같다.

requests

HTTP 메소드

GET : 리소스 요청
POST : 대기 리소스 추가 요청이나 수정/삭제 목적으로 사용

이 말고도 HTTP 메소드는 더 있지만 크롤링 할때 자주 사용하는 녀석은 이 두가지이다.

header 부분을 볼때
get 인지 post 인지 알게 된다.

G_Market은 get 이기 때문에

req=requests.get(main_url , headers=requests_header)

입력을 해준다.

beautifulsoup

BeautifulSoup 은 req 변수에 있는것을 내가 원하는 html 태그를 추출해준다.

자주 사용하는 함수로는 select , select_one 이 있다.

    soup = BeautifulSoup(req.text, 'html.parser')
    for s in soup.select('span.text__item'):
        print(s.text)

실행을 해보면 맥북에 대한 상품 이름들이 출력되는것을 볼 수 있다

profile
꾸준함이란 ... ?

1개의 댓글

comment-user-thumbnail
2020년 2월 13일

꿀팁 공유 감사합니다 ! 일반접근으로는 못해냈는데 작두님 방법으로는 성공~!

답글 달기