• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 엔지니어링

  • 해결 여부

    미해결

안녕하세요 문과를 졸업하고 늦게나마 코딩을 공부하고 있는 학생입니다.

19.11.30 02:35 작성 조회수 104

0

반갑습니다. 처음으로 인사를드리네요. 개발자님의 강의를 너무 감명깊게 봐서 몽고 디비만 빼고 모두 수강했습니다.

좋은 강의를 만들어주셔서 너무 감사하다는 말 드리고 싶습니다.

강의를 활용하여 이제는 조금씩 코딩을 진행하고있는데 새로운스타일의 크롤링을하게 진행하게 되어서 답답한마음에 글을 남기게 되었습니다. 주변에 여쭤볼사람이없습니다.

프로젝트라고 할건없지만 작은 회사에서 저를 필요로 하여서 공부를해가면서 코딩을 진행중입니다.

회사와 관련되어서 프로그램의 자세한 내용은 밝힐수 없는점 이해부탁드립니다.

개발자님께 질문전에 충분히 생각하고 외국포럼도 서치하면서 찾아보고 이미 지식인에도 다올려봤지만 답이 안나오더군요.

그럼 제가 궁금한점 질문드리겠습니다.

BeautifulSoup을 이용해서 파싱을 진행중인데

제가 파싱하는 사이트는 옵션값들이 전부 동적페이지와 연결이되어있습니다. 예를 들어 클릭을 하면 텍스트가 뜨는 형식으로요.

개발자님의 강의를 들어서 활용을 해볼려고 했으나 이 또한 html 내용이 값을 얻기 어렵게 되어있어.

<script> 구문의 텍스트를 긁어와 텍스트를 이용하여 값을 도출할려고합니다.

--------------------------------------

<script>

    window.aehostname = '.us.ot7'

</script>

    <script>

                        window.runParams = {

                            data: {"actionModule":"skuPropertyName":"색깔","skuPropertyValues":[{"propertyValueDisplayName":"파란","propertyValueId":173,"propertyValueIdLong":173,"propertyValueName":"파란","skuColorValue":"#0080FF",","skuPropertyImageSummPath":"skuPropertyTips":"파란","skuPropertyValueShowOrder":1,"skuPropertyValueTips":"파란"},{"propertyValueDisplayName":"빨간","propertyValueId":10,"propertyValueIdLong":10,"propertyValueName":"빨간","skuColorValue":"#FF0000",""skuPropertyTips":"빨간","skuPropertyValueShowOrder":1,"skuPropertyValueTips":"빨간"},

                        csrfToken: 'rb2zpy7fwxpm',

            abVersion: '',

        };

------------------------------------------------------

대충 스크립트를 크롤링 해오면 이런텍스트로 가져오게되는데 이텍스트에서

[propertyValueName] 키의 값인   [ 빨간]과 [파란]을        딕셔너리 형태로 가져오고싶습니다.

어떻게 해야하는지 알려주시면 감사드리겠습니다.

절대 쉬운길을 찾아서 개발자님께 질문을 바로드리는게 아닙니다.

시간에 쫒기다보니 무례인줄알지만 제자로써 질문을 드리게되었습니다.

개발자님께 항상 행복이 함께하길 바라겠습니다.

더 열심히 공부하겠습니다. 죄송합니다.

 

답변 1

답변을 작성해보세요.

0

안녕하세요. 우선은 제 강의를 감명깊게 보셨다니, 꼭 도움이되셨던 강의가 되었으면 하고, 정말 감사합니다.

요청하시는 부분이 수강자분께서 원하시는 크롤링 프로그램을 구현하는 코드를 만들어야하는 것인데요.

강좌에서 제시하는 크롤링 코드에 대해 문의를 주신다면 답변이 가능하지만, 각자 원하시는 크롤링 프로그램을 봐드리는 것은 무리가 있어서요. 왜냐하면, 크롤링은 웹페이지마다 다양한 케이스가 있어서요. 

각자 원하시는 웹페이지를 위한 코드를 만든 후, 해당 부분에 어떤 부분이 문제가 있는지 또는 심지어 특정 케이스 추출을 위해 코드를 어떻게 작성할지를 알기 위해서는 제가 직접 해당 웹페이지를 크롤링하는 프로그램을 작성해봐야 하거든요.

혹여나 시간을 들여서 프로그램까지 만들어서 답변드리게 되면, 오해 아닌 오해로, 모든 수강생분들이 이 강의를 들으면 각자가 원하는 크롤링 프로그램을 심지어 평생 요청하면 만들어준다는 오해까지 할수 있어서요.

이 부분은 꼭 좀 양해를 부탁드립니다.

그럼에도 불구하고 문의하신 부분에 도움이 되면 좋을 것 같아, 간단하게 설명할 수 있는 부분만 설명을 드려요.

더 좋은 방법이 많지만, 아주 간단한 방법을 생각해본다면, 문자열로 변환해서 처리해도 좋을 듯 합니다.

댓글로 다는 부분이라 많은 부분이 설명이 어렵긴 한데요. Beautifulsoup 으로 파싱한 데이터는 결국 string 으로 변환이 다음과 같이 가느하니까요. script 라는 태그쪽을 가지고 오고 싶다면, 간단하게 다음과 같이 쓰면, data 변수에 문자열로 script 코드에 해당하는 부분을 저장할 수가 있습니다.

data  = soup.find('script')

data = str(data)

그렇다면, 이 문제는 이제 문자열에서 특정 부분을 어떻게 추출하느냐의 문제로 바꿀 수 있어요.

예를 들어, 문자열 함수 중 index 함수를 써서, propertyValueName 문자가 있는 위치를 찾아서 다음과 같이 문자열 슬라이싱 방식을 통해 해당 값을 추출해서 해당 값을 사전 변수에 넣는 것도 가장 간단한 방법중에 하나가 될 것 같습니다.

data[data.index('propertyValueName')+18:data.index('propertyValueName')+22]

감사합니다.