작성
·
242
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")
위의 코드는 테스트용으로 확인해본 코드이니 참고하시면 될듯 합니다.