li_element.xpath('@class').get()
#선택한 li 요소의 class 속성 값을 추출하는 데 사용됩니다.
# @class 구문은 요소 자체가 아니라 class 속성을 선택하려고 함을 나타냅니다.
get()
# 속성 값을 문자열로 추출하기 위해 XPath 표현식의 끝에서 사용됩니다.
#선택한 요소에 여러 속성이 있는 경우 getall()을 사용하여 모든 속성 값을 문자열 목록으로 추출할 수 있습니다.
text_element = card.xpath('//*[@id="naver"]/div/section/div/div/div[2]/div[2]/ul/li[1]/a/dl/dd[3]/text()')
# /text() 후 .get() 을 이용하자
shell 에다가
from scrapy_splash import SplashRequest
url = 'http://example.com' # replace with your target URL
lua_script = """
function main(splash)
splash:go(splash.args.url)
splash:wait(0.5)
splash:runjs("document.querySelector('a[onclick^=viewGoodsMemberPrice]').click()") # 너가 실행할 js
splash:wait(1.0)
return {html=splash:html()}
end
"""
request = SplashRequest(url, endpoint='execute', args={'lua_source': lua_script})
# send the request
fetch(request)
가끔 태그 안에 text 추출에 공백이나 이상한것들이 껴있을때.
ex) ['\t\t', '뉴비', '108,790원', '\n\t\t']
근데 또 리스트여서 strip 을 못쓸때('list' object has no attribute 'strip' )
normalize-space(text())를 수행하면 불필요한 공백이 모두 제거되고 정리된 문자열이 반환됩니다
or 경로가 꼬였을때는
cd path/to/ssg_wine # 최상위 루트
scrapy crawl wineSpider
sudo docker run -p 8050:8050 scrapinghub/splash
scrapy crawl wineSpider -o output.json

imgH = response.xpath('//div[contains(@class, "productInner") and contains(@class, "img")]')
css에서는 .으로 띄어쓰기 채워도 되지만 xpath 에서는 불가능해. 이건 두가지 클래스를 가지고 있는거야.
cd Crawling/ssg_wine
scrapy crawl winespider