inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)

SSLError 해결하는 방법

크롤링 결과 값이 달라요

123

prayerwung

작성한 질문수 1

0

파이썬에

import requests

from bs4 import BeautifulSoup

param = {

'isDetailSearch': 'N',

'searchGubun': 'true',

'viewYn': 'OP',

'strQuery': '패션 인공지능',

'order': '/DESC',

'onHanja': 'false',

'strSort': 'RANK',

'iStartCount': 0,

'sflag': 1,

'isFDetailSearch': 'N',

'pageNumber': 1,

'resultKeyword': '패션 인공지능',

'icate': 're_a_kor',

'colName': 're_a_kor',

'pageScale': 10,

'isTab': 'Y',

'query': '패션 인공지능',

}

response = requests.get("https://www.riss.kr/search/Search.do?", params=param)

html = response.text

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

articles = soup.select(".srchResultListW > ul > li")

# 헤더가 필요한 경우

header = {

'User-Agent' : 'Mozilla/5.0',

'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y&regnm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5'

}

for article in articles:

title = article.select_one(".title > a").text

link = 'https://www.riss.kr/' + article.select_one(".title > a").attrs['href']

# 상세 페이지 요청

response = requests.get(link, headers=header, verify=False)

html = response.text

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

press = soup.select_one(".infoDetailL > ul > li:nth-of-type(2) > div").text

year = soup.select_one(".infoDetailL > ul > li:nth-of-type(5) > div").text

print(title, link, press, year)

이렇게 했는데 왜 저는 결과물이 하나밖에 안나오는지 못찾겠어요..!

python 웹-크롤링

답변 2

1

스타트코딩

안녕하세요 스타트코딩입니다.

음 저는 똑같은 코드로 테스트 해봤는데 10개가 잘 나오고 있거든요?

 

image.png

다시 한번 테스트 해보시겠어요?

import requests

from bs4 import BeautifulSoup

param = {

'isDetailSearch': 'N',

'searchGubun': 'true',

'viewYn': 'OP',

'strQuery': '패션 인공지능',

'order': '/DESC',

'onHanja': 'false',

'strSort': 'RANK',

'iStartCount': 0,

'sflag': 1,

'isFDetailSearch': 'N',

'pageNumber': 1,

'resultKeyword': '패션 인공지능',

'icate': 're_a_kor',

'colName': 're_a_kor',

'pageScale': 10,

'isTab': 'Y',

'query': '패션 인공지능',

}

response = requests.get("https://www.riss.kr/search/Search.do?", params=param)

html = response.text

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

articles = soup.select(".srchResultListW > ul > li")

# 헤더가 필요한 경우

header = {

'User-Agent' : 'Mozilla/5.0',

'Referer' : 'https://www.riss.kr/search/Search.do?isDetailSearch=N&searchGubun=true&viewYn=OP&queryText=&strQuery=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&exQuery=&exQueryText=&order=%2FDESC&onHanja=false&strSort=RANK&p_year1=&p_year2=&iStartCount=0&orderBy=&mat_type=&mat_subtype=&fulltext_kind=&t_gubun=&learning_type=&ccl_code=&inside_outside=&fric_yn=&db_type=&image_yn=&gubun=&kdc=&ttsUseYn=&l_sub_code=&fsearchMethod=&sflag=1&isFDetailSearch=N&pageNumber=1&resultKeyword=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5&fsearchSort=&fsearchOrder=&limiterList=&limiterListText=&facetList=&facetListText=&fsearchDB=&icate=re_a_kor&colName=re_a_kor&pageScale=100&isTab=Y&regnm=&dorg_storage=&language=&language_code=&clickKeyword=&relationKeyword=&query=%ED%8C%A8%EC%85%98+%EC%9D%B8%EA%B3%B5%EC%A7%80%EB%8A%A5'

}

for article in articles:

    title = article.select_one(".title > a").text

    link = 'https://www.riss.kr/' + article.select_one(".title > a").attrs['href']

    # 상세 페이지 요청

    response = requests.get(link, headers=header, verify=False)

    html = response.text

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

    press = soup.select_one(".infoDetailL > ul > li:nth-of-type(2) > div").text

    year = soup.select_one(".infoDetailL > ul > li:nth-of-type(5) > div").text

    print(title, link, press, year)

1

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. prayerwung님.

크롤링 결과 값이 하나밖에 나오지 않는 부분에 대해 해결 방법을 찾아보겠습니다. 주어진 코드의 문제는 여러 이유가 있을 수 있는데, 보통은 HTML 구조의 변화, 잘못된 CSS 선택자 사용, 혹은 웹사이트의 속도 제한 때문일 수 있습니다.

코드 문제 및 해결 방법

  1. HTML 구조 확인: 웹사이트의 HTML 구조가 변경되었거나, 가져오는 데이터가 여러 페이지에 걸쳐 나눠져 있을 수 있습니다. soup.select(".srchResultListW > ul > li") 이 부분에 문제가 있는지 확인해보세요. 웹사이트의 현재 HTML을 확인해서 선택자가 맞는지 검토하세요.

  2. CSS 선택자 문제: 선택자가 전체 항목이 아닌 특정 항목만 가져오도록 설정되어 있을 수 있습니다. 선택자가 정확히 맞는지 확인하고, 모든 리스트 항목을 선택할 수 있도록 수정해 보세요.

  3. 페이지 네비게이션: RISS의 경우 검색 결과가 페이지 별로 나눠져 있을 수 있으며, 현재 페이지 번호나 시작 인덱스를 변경하며 다른 결과를 가져와야 할 수도 있습니다.

  4. User-Agent 헤더: 사이트가 클라이언트를 차단하지 않도록 User-Agent를 추가하세요.

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
  1. 사이트의 속도 제한: 요청 간 간격이 너무 짧으면 사이트에서 차단할 수 있습니다. time.sleep() 함수를 사용해 요청 간 딜레이를 추가하세요.

참고할 유사한 질문과 답변

이 코드 업데이트를 통해 문제를 해결할 수 있길 바랍니다. 지속적으로 문제가 발생한다면 사이트의 HTML 구조를 다시 한 번 확인하시고, 각 HTML 요소가 정확히 선택되었는지 체크하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

셀레니움 환경설정 오류

0

52

2

네이버 로그인 관련

0

282

2

안녕하세요 셀레니움에 대해서 질문

0

89

1

크롤링 연습사이트 문의

0

102

2

선택자 질문

0

74

2

'특정 요소가 나타날 때까지 스크롤' 부분 에러

0

78

2

자동 로그인 질문

0

90

2

44강 제목, 링크

0

107

1

원하는 값이 없을 때

0

91

2

크롤링한 링크가 엑셀로 들어가면 작동이 안되요

0

230

2

셀레니움 PDF자료는 받을 수 있나요

0

100

2

글목록 추출하기

0

100

2

메일 자동화 로그인 중복방지문자해결 오류 및 명시적 대기 질문

0

91

2

강의 노트가 어디에 있는건가요?

0

80

2

강의 커리큘럼 질문

0

102

1

조건문 else 사용하지 않는 이유

0

77

2

셀레니움으로 접근할 수 없는 경우

0

97

2

웹페이지 변경

0

75

2

자바스크립트로 태그 선택 시 질문입니다.

1

65

2

수료증은 어떻게 받나요?

0

122

2

class명을 활용하여 선택자를 만들지 않는 경우..?

0

61

2

드라이버가 안 열려요

0

79

2

이거 해결방법 아시는 분?

0

121

2

네이버 지식인 크롤링..

0

202

2