• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

2-6-2_new 질문

19.03.23 23:26 작성 조회수 88

0

아래와 같이 복사 해서 실행하였는데

결과는 에러가 나옵니다. 도와 주세요..

< html >

< body >

< div id = " foods " >

< h1 > 안주 및 주류

< ul id = " fd-list " >

< li class = " food hot " data-lo = " ko " > 닭 도리탕

< li class = " food " data-lo = " jp " > 돈까스

< li class = " food hot " data-lo = " ko " > 삼겹살

< li class = " food " data-lo = " us " > 스테이크

< ul id = " ac-list " >

< li class = " alcohol " data-lo = " ko " > 소주

< li class = " alcohol " data-lo = " us " > 맥주

< li class = " alcohol " data-lo = " ko " > 막걸리

< li class = " alcohol high " data-lo = " cn " > 양주

< li class = " alcohol " data-lo = " ko " > 동동주

Traceback (most recent call last):

File "/Users/Apple/section2/download2-6-2.py", line 14, in

print("1", soup.select("li:nth-of-type(4)")[1].string) #각 li 태그 그룹의 4번째 요소 선택

IndexError: list index out of range

[Finished in 0.659s]

첨부 파일 복사본

from bs4 import BeautifulSoup

import sys

import io

sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding = 'utf-8')

sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding = 'utf-8')

fp = open("food-list.html",encoding="utf-8")

soup = BeautifulSoup(fp, "html.parser")

print(soup)

print("1", soup.select("li:nth-of-type(4)")[1].string) #각 li 태그 그룹의 4번째 요소 선택

print("2", soup.select_one("#ac-list > li:nth-of-type(4)").string)

print("3", soup.select("#ac-list > li[data-lo='cn']")[0].string)

print("4", soup.select("#ac-list > li.alcohol.high")[0].string)

param = {"data-lo": "cn", "class": "alcohol"}

print("5", soup.find("li", param).string)

print("6", soup.find(id="ac-list").find("li",param).string)

for ac in soup.find_all("li"):

if ac['data-lo'] == 'us':

print('data-lo == us', ac.string)

답변 1

답변을 작성해보세요.

0

안녕하세요. 오근님

해당 2-6-2는 오류가 나는 것이 맞습니다.

https://github.com/eunki7/python_create_app_1/blob/master/section2/2-6-2_new_1.py

수정 후 새로운 파일을 업로드 한 상태입니다.

링크 가셔서 확인하시면 실행됩니다.

감사합니다.