• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

딕셔너리로는 크롤링 명령을 못내리나요?

20.11.12 21:19 작성 조회수 153

0

안녕하세요.

바로 실전 크롤링해보기: 네이버 쇼핑 사이트 크롤링하기의 8분 48초에 대해 질문 있습니다.

site list에 여러 사이트를 넣어두고 반복했는데, 이떄 헷갈리지 않게 위에 사이트명을 print(site)로 적으셨잖아요. 저는 사이트 명 대신 패션이나 인테리어같이 한글로 적고 싶은데요.

어떻게 반복문 와중에 각각의 사이트주소를 한글로 대치할 수 있을까 고민하다가 딕셔너리로는 되지 않을까 해서 해봤는데요. 키값인 한국어를 불러오기도전에 변수명.values에서부터 오류가 먹네요. 

site_list={'패션':'https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000000'}

from bs4 import BeautifulSoup

import requests

res = requests.get(site_list.values())

soup = BeautifulSoup(res.content,'html.parser')

items = soup.select('#productListArea > ul > li > p > a')

for item in items:

    print(item.get_text())

아무래도 No connection adapters were found for "dict_values(['https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000000'])" 로 뜬걸로 보아 안되는 것 같은데 앞서 말씀드린 것처럼 사이트주소를 한글로 바꾸려면 어떤 방법이 있을까요?  

답변 3

·

답변을 작성해보세요.

2

김서현님의 프로필

김서현

2020.11.23

저도 이걸로 고민 했었는데요!! 대신 답글 달아드려요

저도 dictionary 이용해서 코드 진행했구요

'패션'이랑 '가전' best 100 을 한 번에 가져오고 싶었습니다.

그리고 영문사이트 주소명 대신 한글 키워드를 상단에 넣고 싶었구요.

저희가 데이터 구조에서 배웠던 딕셔너리 읽기(변수명[키]) 를 활용했습니다.

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

import requests

from bs4 import BeautifulSoup

site_dic={'https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000002':"패션",'https://search.shopping.naver.com/best100v2/detail.nhn?catId=50000003':"가전"}

for site_list in site_dic.keys():

    print(site_dic[site_list])

    res=requests.get(site_list)

    soup=BeautifulSoup(res.content, 'html.parser')

    data=soup.select('#productListArea > ul>li > p > a')

    

    for index,i in enumerate(data):

        print(index+1,i.get_text())

    print('\n')        

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

도움이 되었으면 좋겠습니다 :)

0

ㄴ서현님 정말 감사드립니다. 무턱대고 request.get안에 딕셔너리값을 끼워넣어서 그런가보네요. 반복문으로 다시 한 번 해보겠습니다 번호까지 매겨져있고 코드 깔끔하니 좋네요 더 공부해야겠습니다 ㅎㅎ 답변 다시 한 번 감사드려요~!!!

0

안녕하세요. 우선 이 부분은 다음 공지사항과 함께 양해를 부탁드립니다.

각자의 코드를 봐드리거나, 각자 원하시는 기능을 함께 작성하기에는 조금 무리가 있습니다. 간략히만 이야기드리면, 다음과 같이 해도 되지 않을까 생각합니다. 감사합니다.

res = requests.get(site_list['패션'])

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

안녕하세요. 잔재미코딩 Dave Lee 입니다.

오늘은 한가지 공지를 드려요~~

그동안 정말 다양하고 많은 분들께서 수강을 해주고 계시는데요. 그러다보니, 질문/답변 란에 동일한 이야기를 드릴 때가 많아서 공유를 드려요.

질문/답변 란에, 각자 원하시는 크롤링 코드 관련 문의를 해주시는 경우가 꽤 있었는데요. 그 때마다, 가급적 배려를 드리는 차원으로, 가볍게 볼 수 있는 부분에 대해서만 답변을 드리기는 했습니다. 하지만, 해당 질문/답변 란은 본 강의 영상과 관련한 질문이 있을 때를 답변해드리는 것이 기본 취지인 것 같아요. 

온라인 수학 강의를 수강하면서, 강의에 나온 수학공식을 사용하는 강의 외에 각자 풀고 있는 수학 문제를 질문하고, 이를 풀어드리는 강의는 본 적이 없는데요. 마찬가지로 본 강의를 수강하시면서, 각자의 코드나, 각자 원하시는 크롤링 코드를 작성해드리거나, 함께 풀어나가는 것은 현실적으로 큰 무리가 있습니다.

더군다나 본 강의가 평생 수강이 가능하기 때문에, 이를 지원해드릴 경우, 본 강의를 들으면 내가 원하는 크롤링 코드는 모두 해결해드려야 하는 오해 아닌 오해도 생길 수 있고요. 심지어, 저도 실제 코드를 작성해봐야 해서, 코드를 작성하느라 답변이 늦어지면, 다른 답변이 늦어질 수도 있어서, 다른 수강생분들께도 문제가 될 수 있을 것 같습니다.

그래서, 질문/답변란에 문의를 주실 때에는 각자의 원하시는 크롤링 코드 관련 문의는 안해주시면 감사하겠습니다. 이 부분 꼭 양해를 부탁드립니다.

또한 가능하다면,

1) 어느 챕터의 몇분(:몇초)정도에서 이 부분이 이해가 안간다 와 같은 식으로 질문을 해주시면,

2) 강의에서 나온 코드는 이미지 캡쳐보다, 코드 자체를 텍스트로 질문에 붙여주시면,

훨씬 저도 이해가 빨라서, 빠르게 지금과 같이 상세하게 답변드릴 수 있을 것 같습니다.

감사합니다.~~~ 잔재미코딩 드림

인프런에 오픈 중 또는 오픈 예정인 강의 코스

풀스택 코스: 최신 웹/앱 서비스를 A to Z 로 혼자서도 만들 수 있는 테크트리

익히는 순서에 따라 번호를 붙여 놓았습니다.

1. 파이썬과 데이터 수집(크롤링) 기본 (파이썬과 웹, 데이터 이해 기본) 
2. SQL과 데이터 저장/분석 기본 (SQL 데이터베이스 기본) 
3. NoSQL(mongodb) 빅데이터 기본 (NoSQL 데이터베이스 기본) 
4. 가장 빠른 풀스택: 파이썬 백엔드와 웹기술 기본 [풀스택 Part1]
5. 파이썬 백엔드 중급과 풀스택 서비스 개발 (풀스택 Part2, 9월 오픈 예정)
6. 풀스택을 위한 Vue 와 프론트엔드 웹기술 기본 (풀스택 Part3, 10월 오픈 예정)
7. 풀스택을 위한 AWS 와 docker 기반 배포 기술 기본 (풀스택 Part4, 11월 오픈 예정)
8. 풀스택 앱 개발을 위한 flutter 기본 (풀스택 Part5, 12월 오픈 예정)

* 로드맵 패키지로 한번에 현재까지의 풀스택 코스 모든 강의를 할인된 가격으로도 제공합니다. 
[입문~중급] 가장 쉽고, 빠른 풀스택 로드맵

데이터 분석/과학 코스: 원하는 데이터를 가져와서 분석하고, 예측까지 할 수 있는 최신 테크트리

익히는 순서에 따라 번호를 붙여 놓았습니다.

1. 파이썬 입문과 크롤링 기초 부트캠프 (파이썬과 데이터 수집 기본) 
2. Scrapy와 Selenium 정복 (현존 최강 크롤링 중급 기술 및 관련 IT 지식) 
3. SQL과 데이터 저장/분석 기본 (데이터 저장/분석) 
4. NoSQL(mongodb) 빅데이터 기본 (빅데이터 저장/분석) 
5. 파이썬 데이터 분석 기본 (데이터 분석) 
6. 머신러닝/인공지능 기본 (데이터 예측, 열심히 준비하고 있습니다) 

로드맵 패키지로 한번에 현재까지 모든 강의를 할인된 가격으로도 제공합니다. 
[입문~초급] 취업을 위한 데이터 분석 기본 기술 쉽게! 꼼꼼하게 익히기