반응형

전체 글 73

scrapy[스크래피] mongo db 인서트

스크래피(scrapy)로 크롤링한 정보를 몽고db에 인서트 시킬 경우 settings.py 와 pipelines.py 수정이 필요하다. 봇 네임등은 스크래피 봇 생성시 기본적으로 작성되기 때문에 MONGO_URI,MONGO_DATABASE 부분만 추가. #settings.py #기본 설정되어 있는 부분------ BOT_NAME = 'ecommerce' SPIDER_MODULES = ['ecommerce.spiders'] NEWSPIDER_MODULE = 'ecommerce.spiders' DUPEFILTER_CLASS ='scrapy.dupefilters.BaseDupeFilter' #기본 설정되어 있는 부분--------------------- #로봇 설정 부분, 막힐 경우 False로 변경 ROBO..

크롤링/scrapy 2020.09.24

[scrapy] 엑셀(csv) 필드 정렬, 순서대로 저장, 한글 깨짐 현상

scrapy로 크롤링 할 정보를 엑셀(csv)로 저장할때 필요한 경우 사용할 수 있으나 sql,몽고db등 사용시에는 불필요. 속도만 느려짐. scrapy로 크롤링 한 정보를 csv로 저장할 때 필드 정렬하는 방법 settings.py 파일에 추가 FEED_EXPORT_FIELDS=[출력순서] 예 ) FEED_EXPORT_FIELDS=["title", "price", "link"] title, price, link 등은 items.py에서 필드값으로 정의한 것임. 크롤링 페이지마다 순서대로 저장하고 싶을때 settings.py 파일 수정 CONCURRENT_REQUESTS =1 로 수정하고 주석해제 단점: 아무래도 다소 크롤링 속도가 느려짐 엑셀(csv)한글 깨짐 settings.py 파일 수정 FEED_..

크롤링/scrapy 2020.09.22

scrapy shell 접속, 크롤링

쉘 접속 scrapy shell url 예시 >> scrapy shell http://naver.com response.css("css 셀렉터").get() (제일 처음 하나) response.css("css 셀렉터").getall() (전체를 리스트로 반환) 예시 >>response.css("div.good > ul > li a").getall() 예시 >>response.css("div.good > ul > li a::text").getall() (::text 태그 제외, 텍스트만) url 주소와 같은 태그 내의 속성 response.css("div.good > ul > li a::attr(href)").getall() ->a태그 내의 링크주소 가져오기 쉘 나오기 exit 입력

크롤링/scrapy 2020.09.22

scrapy(스크래피) 프로젝트 생성방법

1. cmd 또는 아나콘다 프롬프트 등에서 프로젝트를 만들고 싶은 폴더로 이동 2. 명령 창에 scrapy startproject 폴더명 -> 폴더 생김 ex : scrapy startproject naver 3. 스파이더 만들기 명령 창에 scrapy genspider 스파이더명 url주소 ex : scrapy genspider test1 www.naver.com http를 붙일 경우 http://http://가 될 수 있기에 http는 생략 가능. 여기까지 수행하면 위와 같이 naver 폴더와 test1.py 파일이 생성된다. 참고로 test1.py의 allowed_domains은 해당 주소가 포함된 url만 크롤링 하겠다는 것으로 옵션임 (없어도 됨) 4. 스파이더 실행하기 import scrapy..

크롤링/scrapy 2020.09.18

selenium(셀레니움)기초 webdriver 다운로드 및 사이트 접속

selenium을 사용하기 위해서 필요한 사전작업은 크게 2가지가 있다. 1. selenium 라이브러리 설치 : pip install selenium 2. 웹드라이버다운로드 (크롬) https://sites.google.com/a/chromium.org/chromedriver/ 중요한 점은 현재의 크롬 버전과 동일한 웹 드라이버를 다운받아야 된다는 점이다. 나의 크롬 버전이 84.0.4147.89라면 84.0.4147.xx 버전을 다운받으면 된다. 라이브러리 설치와 웹드라이버 다운로드가 완료되었다면 이제 간단히 홈페이지에 접속해보자. from selenium import webdriver #엔터,스페이스 등의 키조작을 위한 라이브러리 from selenium.webdriver.common.keys im..

카테고리 없음 2020.07.20

python json - load 와 loads

1. loads를 쓸때 문자열을 읽을때는 loads를 쓴다. #주의 변수 data는 dict가 아닌 ' 문자열 ' 이다. data = '{"id":"01", "language":"korean","edition":"third", "author":"wonwoo joo"}' jdata = json.loads(data) print(jdata) >>{'id': '1000', 'language': {'first': 'korean', 'seconds': 'english'}, 'grade': 'A', 'name': 'honaldo'} 2.load를 쓸때 파일을 읽을때는 load를 쓴다. # data를 json파일로 저장 data = {"id":"1000", "language":{"first":"korean","seco..

python 크롤링, select , select_one 차이

실제로 크롤링을 처음 시작할 때 헷갈리는 부분 중 하나가 select와 select_one의 차이다. 차이점은 select는 결과값이 리스트 형태로 저장되고, select_one은 그렇지 않다. select로 수집하였을때는 결론적으로 for문을 통해 한번 더 접근하여야 한다. 아래와 같은 html이 있고, 변수 html에 담는다. html= """ 네이버링크 다음링크 """ 1. select를 사용할 경우 from bs4 import BeautifulSoup soup = BeautifulSoup(html,"html.parser") data = soup.select("a") print(data) >> [ 네이버링크 , 다음링크 ] -->> 리스트에 담긴다. #여기서 잠깐! url을 통해 파싱하는 것이 아니..

크롤링 2020.07.08

(python )파이썬 기초, from과 import

from math as mt mt.pow(3,3) >>27 #factorial(3) = 1*2*3 from math import factorial as fa fa(3) >>6 파이썬에서 라이브러리를 사용할때 from , import 형태로 불러온다. *pow()지수승 구하는 함수 math 라이브러리에서 모든 함수를 임포트 from math import * math.pow(3,3) >>27 math 라이브러리를 임포트 import math math.pow(3,3) >>27 import 에서 함수명을 각각 불러올 경우에는 해당 함수를 바로 사용할 수 있다. from math import pow,factorial pow(3,3) >>27 factorial(3) >>6 라이브러리나 함수명이 길경우에는 매번 작성..

몽고db 비교문법 정리

$eq = db.user.find({ age : {$eq : 30} }) 나이 30을 찾아라 $gt > db.user.find({ age : {$gt : 30} }) 나이 30초과를 찾아라 $gte >= db.user.find({ age : {$gt : 30} }) 나이 30이상을 찾아라 $lt = db.user.find({ age : {$lte : 30} }) 나이 30이하를 찾아라 $in db.user.find({ age : {$in :[ 30,50] } } ) 나이 30과 50을 찾아라 $nin db.user.find({ age : {$nin :[ 30,50] } } ) 나이 30과 5이 아닌것을 찾아라 $ne != db.user.find({ age : {$ne : 30} }) 나이 30이 아닌것을..

DB/mongoDB 2020.07.03
반응형