간혹 requests.get으로 못 가져가게 막아 놓은 사이트가 있다.
그런 경우 크롬 개발자 도구의 network탭으로 가면 페이지 변환이 일어나거나 데이터 전송이 일어나는 경우에 네트워크에서 전송되는 파일의 목록을 확인할 수 있다.
이런 경우에 해당 내용을 보면서 데이터가 어떻게 전송되는지 확인하면 json파일로 쉽게 정보를 가져올 수도 있고,
간혹 일반 url만으로 정보가 오지 않는 경우 해당 url 뒤에 쿼리스트링으로 Request Headers에 나온 것을 객체로 만들어서 함께 전달하면 정보를 받을 수 있는 경우가 있다.
동일 사이트 : 정보 가져오지 못함
import requests
import re
from bs4 import BeautifulSoup
url = "http://www.jolse.com/category/moisturizer/1017/?page=2"
html = requests.get(url)
print(html.text)
(결과값)
동일 사이트 : headers 첨부로 정보 가져옴
import requests
import re
from bs4 import BeautifulSoup
url = "http://www.jolse.com/category/moisturizer/1017/?page=2"
headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"}
html = requests.get(url,headers=headers)
print(html.text)
(결과값)
사이트마다 정보를 가져오는 방법은 다양하다.
- requests.get( ) 으로 정보를 주는 경우
- json 이나 xml 파일로 데이터를 전송하는 경우
- headers에 정보를 가지고 가야 정보를 주는 경우
- 크롤러로 다수 정보를 요청하는 경우 막는 경우 등
웹 크롤러를 만들기 위해서는 기본적으로 사이트에 대한 분석이 제대로 되어야 하며, 네트워크를 통해 전송되는 데이터 타입과 데이터 전송 방법에 대한 이해를 하고 있는 것이 좋다.
반응형
'Python > Python Crawling' 카테고리의 다른 글
파이썬 에러, re와 BeautifulSoup error : html.parser type Error (0) | 2019.05.10 |
---|---|
파이썬 크롤링, 웹 이미지 저장(파일 저장 방법) (0) | 2019.05.09 |
파이썬 크롤링, BeautifulSoup으로 정보 가져오기 (0) | 2019.05.09 |
파이썬 크롤링, re로 특정 정보 선택하기(간단한 정규표현식) (1) | 2019.05.09 |
파이썬 크롤링, requests로 네이버 웹 정보 가져오기 (0) | 2019.05.09 |
댓글