• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

select_one 선택자 어떻게 해야할까요 도저히 모르겠네요

21.04.26 21:59 작성 조회수 138

1

파이썬을 검색하고 f 12 눌렀을때

보이는 화면은 아래와 같습니다

도저히 어떻게 선택자(단어가 맞는지 모르겠네요)를 

해야할까요?

저는 아래와 같이 한번 해봤습니다만 

안되네요

여러가지로 많이 해봤는데도 안되서 문의드립니다.

title = l.select_one("div#res div#search div#rso div.hlcw0c div.tF2Cxc h3.LC20lb.DKV0Md").text

답변 1

답변을 작성해보세요.

0

구글 같은경우 생각보다 로직이 자주 변하는 사이트 중에 하나 입니다. 제가 확인해본바로 F12 를 눌러 개발자모드로 보는 내용과 실제 최초 브라우저가 다운로드 하는 데이터가 조금 다른 부분이 있습니다.

그리고 요청(requests.get()) 을 할때 헤더의 user-agent 가 어떠냐에 따라서도 내용이 달라지는 부분도 있는것 같습니다. 크롤링을 할때 실제 이런 여러가지 요소를 확인해봐야 합니다.

import requests
from bs4 import BeautifulSoup

url = "https://www.google.com/search?q=파이썬강좌&oq=파이썬강좌"


header = {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36,gzip(gfe)"}
r = requests.get(url, headers=header)
bs = BeautifulSoup(r.text, "lxml")

# div.g 이하의 div 에서 class 명은 주기적으로 바뀌기 때문에 사용할 수 없고
# id 값은 자바스크립에 의해 렌더링 되는 걸로 판단되므로 사용할 수 없음
links = bs.select("div.g > div > div")

print("요소갯수 : ", len(links))
for l in links:
    title = l.select_one("h3")
    print(title, "\n=======\n")

위의 코드는 테스트용으로 확인해본 코드이니 참고하시면 될듯 합니다.