XPath

P4·2023년 5월 25일
0
post-thumbnail

xpath

  • html element를 선택하는 방법
  • scrapy에서는 기본적으로 xpath를 사용

scrapy 설치

# !pip install scrapy ## 또는
# %pip install scrapy

라이브러리 임포트

import scrapy, requests
from scrapy.http import TextResponse

response 가져오기

url = "https://search.naver.com/search.naver?query=삼성전자"

request = requests.get(url)
response = TextResponse(request.url, body=request.text, encoding="utf-8")

XPath 추출

  • XPath 경로는 크롬 개발자모드에서 원하는 요소 우클릭 --> Copy --> Copy XPath

  • //*[@id="nx_right_related_keywords"]/div/div[2]/ul/li[1]/a/div 이렇게 있을때

// : 최상위 엘리먼트
* : 모든 하위 엘리먼트 : css selector의 한칸띄우기와 같다.
[@id="value"] : 속성값 선택
/ : 한단계 하위 엘리먼트 : css selector의 >와 같다.
[n] : nth-child(n)

# div 요소 모두 선택
response.xpath('//*[@id="nx_right_related_keywords"]/div/div[2]/ul/li/a/div')[:2]

텍스트 요소 선택

# 텍스트 요소 선택 (div 태그가 제거된 데이터만 반환)
response.xpath('//*[@id="nx_right_related_keywords"]/div/div[2]/ul/li/a/div/text()')[:2]

데이터 추출

response.xpath('//*[@id="nx_right_related_keywords"]/div/div[2]/ul/li/a/div/text()')\
.extract()

출력

['삼성전자주가',
'삼성전자 주식',
'삼성전자 배당금',
'삼성전자 주가 전망',
'삼성전자 주식가격',
'오늘 삼성전자 주가',
'삼성전자 채용',
'삼성전자 배당금 지급일',
'삼성전자서비스',
'삼성전자 as센터']

profile
지식을 담습니다.

0개의 댓글