inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

N번째 태그만 선택하기

네이버 뉴스 본문 링크 질문

해결된 질문

408

최지훈

작성한 질문수 9

1

안녕하십니까,
뉴스본문 기사 크롤링 중 질문이 있습니다.

첨부사진을 보시면, 첫번째 a태그의 class가 info press인데,
명령어를 입력하실 때 그냥 links = article.select("a.info")로 info만 입력하셨습니다.

띄어쓰기 전의 한 단어만 class 명으로 보는 것인지 궁금합니다.

 

아래는 강사님을 따라한 코드입니다(크롤링 결과는 잘 나옴)

# 1. 삼성전자를 검색하고, 네이버 뉴스 본문의 링크만 가져온다
response = requests.get("https://search.naver.com/search.naver?where=news&sm=tab_jum&query=%EC%82%BC%EC%84%B1%EC%A0%84%EC%9E%90")
html = response.text
soup = BeautifulSoup(html, "html.parser")
articles = soup.select("div.info_group") # 뉴스 기사 중 div가 info_group인 것을 선택해라.
# info_group이 총 몇개인지 확인하니까, word에 나와 있듯이 총 기사가 10개임을 확인했다.

for article in articles:
    links = article.select("a.info") # article의 a태그 중 class가 info인 녀석들을 가져오자.
    if len(links) >= 2: # 가져온 결과값은 리스트 형태이고, word에 나와 있듯이 네이버 뉴스는 a태그 2개로 구성되어 있다. 따라서 links의 리스트 중 len함수를 통해 리스트가 몇개인지 파악하고, 링크가 2개 이상인지 확인한다.
        url = links[1].attrs["href"] # 우리가 가져올 건 link 중 2번째 요소니까, [1]을 입력한다(리스트 인덱스는 0부터 시작하니까!)
        # print(url) 본문 링크만 가져온다면 여기서 마치면 되지만, 우리가 원하는건 본문 내용이다.

# 2. 네이버 뉴스 본문 내용 가져오기
        response = requests.get(url, headers={'User-agent' : 'Mozila/5.0'}) # 방금 만든 url에 다시 requests를 사용!, 봇으로 인식되는걸 피하기 위한 header도 넣자.
        html = response.text
        soup = BeautifulSoup(html, "html.parser")
        # print(soup)를 통해 제대로 본문을 가져오는지 확인해보자
        content = soup.select_one("#newsct_article") # 네이버뉴스의 본문을 모두 포함하는 것은 id newsct_article 이다.
        print(content.text)

 

python 웹-크롤링

답변 1

0

스타트코딩

태그에 class가 두개 이상인 경우 띄어쓰기로 구분해서 작성합니다.

 

그리고 CSS 선택자를 만들 때,

class 한개로 만들어도 되고, 두개 이상으로 만들어도 됩니다.

 

즉, 한개로 내가 원하는 태그를 선택할 수 있으면 한개만 써도 되고

여러 개를 써야할 상황이면 여러개를 써야 합니다.

셀레니움 환경설정 오류

0

46

2

네이버 로그인 관련

0

256

2

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

0

85

1

크롤링 연습사이트 문의

0

96

2

선택자 질문

0

71

2

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

0

76

2

자동 로그인 질문

0

86

2

44강 제목, 링크

0

105

1

원하는 값이 없을 때

0

89

2

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

0

227

2

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

0

100

2

글목록 추출하기

0

97

2

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

0

88

2

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

0

80

2

강의 커리큘럼 질문

0

98

1

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

0

76

2

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

0

95

2

웹페이지 변경

0

70

2

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

1

64

2

수료증은 어떻게 받나요?

0

120

2

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

0

60

2

드라이버가 안 열려요

0

79

2

이거 해결방법 아시는 분?

0

121

2

네이버 지식인 크롤링..

0

201

2