request 요청이 거절당한 경우 어떻게 스크래핑을 해야 할까?
request 요청이 거절당한 경우는 무분별한 스크랩핑을 해당 사이트에서 막아놓았을 가능성이 있다. 이런 경우에는 사용자가 직접 접속했다는 정보를 추가하여 문제를 해결할 수 있다.
즉, user-agent 정보를 header에 넣어주어 해결할 수 있다.
• Header란?
HTTP 헤더는 클라이언트와 서버가 요청 또는 응답으로 부가적인 정보를 전송할 수 있도록 해줍니다. HTTP
헤더는 대소문자를 구분하지 않는 이름과 콜론 ':' 다음에 오는 값(줄 바꿈 없이)으로 이루어져있습니다.
• 헤더는 컨텍스트에 따라 그룹핑될 수 있습니다
• General header: 요청과 응답 모두에 적용되지만 바디에서 최종적으로 전송되는 데이터와는 관련이 없는 헤더.
• Request header: 페치될 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더.
• Response header: 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더.
• Entity header: 컨텐츠 길이나 MIME 타입과 같이 엔티티 바디에 대한 자세한 정보를 포함하는 헤더.
브라우저로 둔갑시키기
• F12 -> 네트워크 탭 -> 보여지는 목록 중 하나 선택 -> 우측에서 headers 탭 -> requests header 찾기 -> user-agent
복사해오기
• User-Agent : 클라이언트(브라우저 또는 크롤러)의 식별 정보를 서버에게 전달하는 역할을 합니다.
User-Agent 값은 클라이언트 소프트웨어와 버전, 운영 체제 등 클라이언트 환경에 대한 정보를 포함합니다.
서버는 이 정보를 통해 요청을 보낸 클라이언트의 종류와 능력을 알 수 있습니다.
• User-Agent 이 외에도 Referer나 Cookie 등을 추가해야 할 수도 있습니다.
1순위 ) user-agent, referrer
2순위 ) cookies
3순위 ) auth, authorization 등 권한을 의미하는 단어가 포함된 값
4순위 ) 전부 다
ID, CLASS, 태그 계층 구조 말고 다른 조건을 쓸 수는 없을까?
예를 들어, href 링크 중 “AuthorSearch”라는 글자가 포함되어 있는 태그를 찾고 싶다면?
CSS Selector 예시 : https://www.w3schools.com/cssref/css_selectors.php

• CSS 선택자란?
CSS 선택자(CSS selector)는 웹 페이지에서 HTML 요소를 선택하는 패턴이나 규칙을 나타내는 문자열.
CSS 선택자는 웹 개발에서 HTML 요소를 스타일링하거나 조작하기 위해 사용됩니다.
CSS 선택자를 사용하여 웹 페이지의 특정 요소를 선택하고 스타일을 적용하거나 요소에 접근할 수 있습니다.
• soup.select(“a.title”) 의 뜻은?
-> 지금까지 우리가 사용하던 것이 CSS 선택자입니다.
-> CSS 선택자는 다양한 활용이 가능합니다.
• 연습해볼까요
• "L"로 시작하는 ID 속성 값을 가진 모든 요소를 선택하려면?
[id^='L']
• 문자열 "s"를 포함하는 ID 속성 값을 가진 모든 요소를 선택하려면?
[id*='s']
• id 속성 값이 "ess"로 끝나는 모든 요소를 선택하려면?
[id$='ess']

• 정규표현식으로 연습해볼까요
• "L"로 시작하는 ID 속성 값을 가진 모든 요소를 선택하려면?
• 문자열 "s"를 포함하는 ID 속성 값을 가진 모든 요소를 선택하려면?
• id 속성 값이 "ess"로 끝나는 모든 요소를 선택하려면?
브라우저에 보이는 컨텐츠와
스크랩한 소스코드가 맞지 않는다면?
다양한 경우의 수가 있으나, 대표적인 경우의 수는 다음과 같다.
• Iframe 태그를 사용했거나
• 자바스크립트를 사용했거나


• Iframe이란 쉽게 말하자면, 다른 페이지 정보를 빌려와서 보여주는 방법이다.
그렇게 다른 페이지 정보를 빌려와서 보여주는 경우, 해당 페이지를 get했을 때 빠지게 된다.
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!