• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

SCRAPY에서 ITEM 항목이 변하는 경우, 어떻게 하면 자동으로 반영 되는지 문의드립니다.

21.05.31 15:48 작성 조회수 93

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

안녕하세요, SCRAPY에서 ITEM 항목이 변하는 경우, 어떻게 하면 자동으로 반영 되는지 문의드립니다.

예를 들어서

새로운 크롤링을 위한 item.py 변경

아이템을 위와 같이 정의하고 아래와 같이 스파이더를 코딩할 때

item['rank_num'], item['site_name']  ....에서 rank_num 이나 site_name이 변하는 경우, 변할때 마다 일일이 다 변경해줘야 되는지요

아니면 화면에서 위와 같은 항목이 변경될때 자동으로 반영되게 하는 방법은 없는지 문의드립니다.
감사드리며
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
31
32
33
34
35
36
37
# -*- coding: utf-8 -*-
import scrapy
import sys
# items.py에 대한 path 추가
sys.path.insert(0, '../project/chat_bot_project/section01_2/section01_2')
from items import SiteRankItems

class Pipeline01Spider(scrapy.Spider):
name = 'pipeline_01'
allowed_domains = ['alexa.com/topsites']
start_urls = ['https://www.alexa.com/topsites']

def parse(self, response):
"""
:param :response
: return : SiteRankItems
"""

for p in response.css('div.listings.table > div.tr.site-listing'):
# 아이템 객체 생성
item = SiteRankItems()

# 순위
item['rank_num'] = p.xpath('./div[1]/text()').get()

# 사이트명
item['site_name'] = p.xpath('./div[2]/p/a/text()').get()

# 평균 접속 시간
item['daily_time_site'] = p.xpath('./div[3]/p/text()').get()

# 평균 본 횟수
item['daily_page_view'] = p.xpath('./div[4]/p/text()').get()


yield item
~

답변 1

답변을 작성해보세요.

0

안녕하세요. 말씀하신 부분은 강의 영상에 대한 내용이 아닌 개인의 코드이셔서요.
본 질문/답변란은 본 강의의 영상이 이해가 안갈 경우등에 대한 질문/답변란이고, 초반부 꿀팁 영상에서도 말씀을 드리고, 관련된 문의를 하신 질문/답변란에도 상세히 설명을 드렸는데요.
강의 자체가 평생 강의라서, 강의 영상이 아닌 문의까지 평생 답변을 드리는 부분은 무리가 있어서요.
또 온라인 수학 강의를 수강하면서, 강의에 나온 수학공식을 사용하는 강의 외의 문제나 문의를 평생 답변해주기를 기대하는 경우는 없는데요. 마찬가지로 본 강의도 이런 부분을 양해를 부탁드립니다.
가볍게만 이야기한다면, 공통적으로 변화하는 부분을 잡아낼 수 있는 태그를 선택하는 것 이외에, 자동으로 변화하고 있는 웹사이트의 특정 바뀐 요소를 선택할 수 있는 방법은 없는 것으로 이해하고 있습니다.