scrapy 튜토리얼을 끝냈으니 wiki 크롤러를 한 번 제작해보려했다. 마드리드 거리를 구역 카테고리로 나눈 위키 페이지를 목표로 했다. 각 구역의 모든 거리의 이름과 내용을 모두 긁어오려 한다. class WikicrawlerSpider(scrapy.Spider): name = 'wikicrawler' def start_requests(self): yield scrapy.Request(url='https://es.wikipedia.org/wiki/Categor%C3%ADa:Calles_del_distrito_Centro', callback=self.parse_barrio) def parse_barrio(self, response): barrio_links1 = response.css('div.mw-c..
잔재미코딩님의 강의를 보며 scrapy 튜토리얼을 배워나가고 있다. 기본적인 흐름은 다음과 같다. 1. scrapy startproject [projectname] 으로 새 프로젝트 폴더를 생성한다. 2. scrapy genspider [filename] [domain] 으로 사이트 주소를 start url로 가지는 파일을 생성한다. 2-1. 크롤링하려는 사이트를 scrapy shell 을 통해 크롤러 코드 제작 전에 미리 실험해 볼 수 있다. # -*- coding: utf-8 -*- import scrapy class HelloSpider(scrapy.Spider): name = 'hello' allowed_domains = ['www.naver.com'] start_urls = ['http://ww..
파이썬으로 크롤링 한 데이터를 pymysql로 MySQL DB에 입력하기 코드를 설명하기 위한 것이 아니라 흐름을 정리하기 위해 쓰는 포스트 *잔재미코딩님의 인프런 강의 중 "SQL/DB(MySQL) 기본부터 파이썬/데이터분석 활용까지!" 의 강좌 내용을 정리한 것입니다. ** 잔재미코딩님의 페이지 : https://www.fun-coding.org/ 1. 스키마(Schema)정의 어던 데이터를 어떻게 저장할지 (what/how) 설계해야 한다 - gmarket Best 상품 목록을 DB화 하는 것이 목적 - 랭킹 정보를 담는 ranking 테이블과 상품 정보를 담는 items 테이블 두 개로 나누고 상품코드를 포린키(FK)로 지정하여 연결하는 것으로 설계 - 포린키의 reference를 받는 items..
잔재미코딩님의 pymysql로 database를 실습하는 인프런강좌를 수강 중에 지마켓 크롤러 작성 부분에서 마주한 오류이다. 지마켓 베스트에서 카테고리별 / 서브카테고리별 상품을 모두 따오는 크롤러였는데 다음과 같은 오류가 발생했다. 딱 봐도 저 셀렉트 구문이 잘못되어 value가 없고 value가 없으니 for문에서 꺼낼 값이 없기에 out of range가 생긴 것이겠지. 강좌를 잠시 멈추고 무엇이 잘못되었는지 확인하러 가보자 서브카테고리 밑에 (관련상품군 : 하이마트)라는 굉장히 불편해보이는 것이 끼어있다. 그래서 서브 카테고리 리스트를 받는 select문에서 링크가 있는 a만을 특정해줬더니 (li > a) 문제 해결. 인줄 알았지만 한 번 더 돌리고 다음과 같은 두 번째 오류 발견 가격 내용이 ..
BeautifulSoup은 HTML 문서를 예쁘게 정돈된 파스트리로 변환하여 내놓는 파이썬 라이브러리다. 이 잘 정돈된 데이터 구조는 Beautiful Soup 객체로서 여러 tag 객체로 이루어져 있다. 영어, 한국어와 같은 자연어 문장이 문법에 따라 구조를 갖듯이 HTML 이라는 웹을 이루는 언어로 작성된 페이지를 문법에 맞게 구조화한다. find 와 select 는 BeautifulSoup의 메소드로서 데이터 구조를 항해하는 몇 가지 방법이다. 01. find 사용법 find의 목적은 원하는 태그를 찾는 것이다. 태그는 이름(name), 속성(attribute), 속성값(value)로 구성된다. 따라서 find로 이름, 속성, 속성값을 특정하여 태그를 찾을 수 있다. tag = " Hello Wor..
위키 크롤링을 하던 중 를 만났다. BeautifulSoup으로 image클래스의 a태그를 찾고 src를 find해서 urlllib.request.urlretrieve로 이미지를 다운받는 코드였다. 하지만 이미지가 페이지 내에 아예 존재하지 않을 경우 위와 같은 오류가 생겼는데 예외처리를 위해 다음과 같은 형식의 코드를 넣었다. try: 이미지 = 숲.find('a', class_='image) except AttributeError as e: print(e) else: 이미지2 = 이미지.find('img')['src'] urllib.request.urlretrieve("https:"+이미지2, 타이틀) 하지만 계속해서 어트리뷰트에러가 생겼다. 왜인고 하니 try 구문에서 숲.find를 이미지 변수에 ..
- Total
- Today
- Yesterday
- python
- nltk
- 분석
- css
- 글쓰기
- 파이썬
- 블로그
- 항공
- 리뷰
- scrapy
- 스페인
- BeautifulSoup
- 이슈
- coding
- 오류
- 유튜브
- Crawling
- DATABASE
- error
- 유럽
- 저널
- 마드리드
- 런업
- HTML
- NLP
- 코로나
- flask
- 일기
- 유튜버
- Selenium
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |