Python에서 크롤링(요청, BeautifulSoup, Selenium)

Python에서 아름다운 수프와 셀레늄을 사용하여 크롤링하는 방법

먼저 크롤링이란 무엇입니까?

컴퓨터 소프트웨어 기술 웹사이트에서 필요한 정보 추출~을 위한 것이다

이 사이트는 또한 코드로 구축되어 있으므로 어느 정도 표준화되어 있습니다. 웹 크롤러는 이러한 규칙에 따라 필요한 정보만 추출합니다.

뉴스 기사 웹 페이지에서 기사 제목이나 콘텐츠를 수집하거나 소셜 미디어에서 게시물 콘텐츠와 좋아요를 수집하는 것을 크롤링이라고 합니다.


파이썬으로 할건데 가장 대표적인 라이브러리는 아름다운 수프수업 셀렌예.

이 두 라이브러리를 파헤치기 전에 네트워크가 어떻게 구축되는지 살펴보겠습니다.

다음은 자주 방문하는 네이버 페이지입니다.


naver.com

아무 곳이나 마우스 오른쪽 버튼 클릭 -> 검사(또는 페이지 소스 보기)를 클릭하여 웹 페이지의 구조를 확인합니다.


우클릭 -> 검사


확인을 클릭하면 나타나는 화면

이렇게 웹 페이지 구조가 HTML 형식이 되고, 오른쪽 클릭 -> 페이지 소스 검사 또는 보기를 통해 코드 소스를 볼 수 있습니다.

아래 그림과 같이 인스펙션 창에서 특정 코드 위에 마우스를 올리면 해당 코드로 웹 페이지의 어느 부분이 강조 표시되는지 확인할 수 있습니다.


이와 같이 소스에 따라 웹 페이지에서 원하는 정보를 얻을 수 있습니다.

이 출처 상표그것은에 의해 호출됩니다

여기서 태그란 웹 페이지의 대상 부분에 글자 크기, 글자 색, 글자 모양 등을 변경하거나 링크를 걸거나 이미지를 표시하는 등의 일종의 마크업을 의미한다.

예제 태그는 다음과 같습니다.

안녕하세요

원래 <标签名称> … 형태로 구성

예를 들어 네이버에서 “평방미터당 3211만 원에 집을 팔고 싶은 안양 재건축 회원”이라는 제목의 기사 제목은 다음과 같은 HTML 태그로 표현된다.


상표

자세히 살펴보다, 레이블 텍스트 같은 모양을 가지고

tag_name의 예로는 p, div 및 strong이 있고 속성의 예로는 id 및 class가 있습니다.

(참고로 div는 문단을 나타내는 태그, p는 인라인 태그를 나타냅니다. 각각의 의미를 알면 좋겠지만 모르더라도 스크랩할 수 있으니 자세한 설명은 따로 찾아보세요. )


파이썬에서 스크래핑을 위한 대표적인 라이브러리는 아름다운 수프수업 셀렌예.

두 라이브러리의 차이점은 BeautifulSoup은 위 웹페이지의 소스코드 중 필요한 부분만을 파싱하기 위한 라이브러리이고, Selenium은 자동으로 웹사이트를 제어하기 위한 라이브러리입니다.예.

참고로 요청 라이브러리는 웹 페이지 소스를 로드하는 데 사용됩니다.

위의 네이버 페이지를 예로 들면 BeautifulSoup은 웹 페이지의 소스를 요청한 다음 뉴스 가판대에 있는 뉴스 기사 또는 오늘 읽을 가치가 있는 메뉴를 추출하는 데 사용됩니다.

한편, 오늘 읽어볼만한 글에서는 Selenium이 캐리지 리턴 메뉴를 “딸깍 하는 소리“해봐, 페이지를 아래로 넘겨”스크롤“어떤 키워드”입력하다“하다”입력하다“를 클릭하는 등 웹 사이트를 제어하는 ​​데 사용됩니다.


BeautifulSoup은 웹 페이지 소스에만 적용됩니다. 상표찾는 것이 목적이다 찾다() 개체 및 선택하다() 사용자 대상

(아래는 실제 웹페이지를 활용하여 실습한 부분입니다.)

찾다()하나를 선택() 개체는 찾은 첫 번째 태그를 반환합니다. 모두 찾기()또는 선택하다() 이 개체는 모든 해당 태그를 반환합니다.

예를 들어 다음과 같은 샘플 웹 페이지 소스 코드가 있다고 가정합니다.


필요한 라이브러리를 로드하고 위의 소스를 BeautifulSoup 개체로 반환합니다.

하나
2
수입 필요하다 # 페이지 소스 가져오기
~에서 BS4 수입 아름다운 수프 ~처럼 무의미한 말 # 받은 페이지 소스를 파싱
씨에스

“p” 태그에 대한 정보를 추출하려면 다음을 수행할 수 있습니다.


수프.p“p” 태그에 대한 정보를 입력하고,

태그 이름레이블 이름으로,

라벨 속성속성으로,

태그(‘아이디’)id 속성에 해당하는 값으로,

레이블(‘클래스’)를 사용하여 클래스 속성에 해당하는 값을 추출할 수 있습니다.

“div” 태그도 마찬가지입니다.


지금 찾다() 태그 이름으로 태그를 추출하는 방법은 다음과 같습니다.


또는 속성과 값으로 추출하는 방법입니다.


위의 예에서 찾다()그리고 모두 찾기()차이점도 볼 수 있습니다.

다음 선택하다()탭을 빼는 방법이기도 합니다.

태그 이름을 기준으로 아래와 같이 찾을 수 있습니다.


속성에서 다음과 같이 클래스에 “.”을 사용하고 id에 “#”을 사용합니다.


태그 이름과 클래스 또는 ID를 사용하여 다음을 수행할 수 있습니다.


찾다()그리고 선택하다()태그를 지정하는 방법은 비슷하지만 특정 경로의 태그를 반환할 때 find는 코드를 반복해야 하고 select는 하위 경로를 직접 지정할 수 있습니다.


find는 먼저 “div” 태그를 찾은 다음 “p” 태그를 연결하는 반면 select는 바로 아래 하위 경로를 “div > p”로 지정합니다.

또한 select가 더 빨리 실행되고 메모리를 적게 사용하므로 find보다 select를 사용하는 것이 좋습니다.


실제 웹 페이지를 심각하게 크롤링하는 관행은 다음 기사에서 계속됩니다.