Я не был уверен, нужны ли ему все заголовки и файлы cookie, поэтому я начал с Session()
, а позже я не проверял, могу ли я его пропустить.
URL-адреса дают HTML, но сервер отправляет их как JSON, поэтому я начинаю поиск в HTML и нашел JSON данные в
<script id="__NEXT_DATA__" type="application/json">
А затем я получаю их и использую модуль json
для преобразования в словарь Python.
Самой большой проблемой было найти интересные данные во всей этой информации.
import requests
from bs4 import BeautifulSoup
import json
s = requests.Session()
s.headers.update({'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0'})
# main page to get cookies
url = 'https://shopping.naver.com/'
r = s.get(url)
# search
query = 'test'
# I skip this part - it needs normal BeautifulSoup to get data
#url = 'https://search.shopping.naver.com/search/all?cat_id=&frm=NVSHATC&query={}'.format(query)
#r = s.get(url, timeout=100)
#print(r.status_code)
for page in range(1, 3):
print('--- page', page, '---')
url = 'https://search.shopping.naver.com/search/all?frm=NVSHATC&origQuery=test&pagingIndex={}&pagingSize=40&productSet=total&query={}&sort=rel×tamp=&viewType=list'.format(page, query)
r = s.get(url, timeout=100)
#print(r.status_code)
soup = BeautifulSoup(r.content, 'html.parser')
# gives only 5 items
#for ul in soup.find_all('ul', {'class': 'list_basis'}):
# for li in ul.find_all('li'):
# print(li.text)
# print('---')
# print('----------------')
script = soup.find('script', {'id': '__NEXT_DATA__'})
data = json.loads(script.text)
#print(data.keys())
#print(data['query'].keys())
#print(data['props']['initialProps'].keys())
#print(data['props']['pageProps'].keys())
#print(data['props']['initialState'].keys())
#print(json.dumps(data['props']['pageProps']['initialState']['products']['list'], indent=2))
products = data['props']['pageProps']['initialState']['products']['list']
print('len(products):', len(products))
for item in products:
#print(item['item'].keys())
print('productName:', item['item']['productName'])
#for key, value in item['item'].items():
# print(key, '=', value)
Результат:
--- page 1 ---
len(products): 40
productName: 염소농도 테스트 페이퍼 CM-240 (Chorine Test Paper)
productName: P30-Bact 박테리아 검사키트, Bacteria Test Kit 수질검사키트 ITS
productName: JT602A 테스터 팁잭 JT-602A Test Tip Jack
productName: Pro’skit MT-3102 3 1/2 2A Mini hook table attached to the temperature test probe
productName: FLUKE TL75 TEST LEAD 테스트리더
productName: DC 2CM/건식 가스미터 가스미타 DRY TEST GAS METER
productName: 다다 다다 리드선 MET-500용 리드선 TEST LEAD
productName: (신길테크) FLUKE ES165X EARTH SPIKE TEST KIT
productName: 14 플라스틱 수분계 테스트 용기 14 Plastic Hydrometer Test Jar
productName: [TESTO] 테스토 / TEST 175-T2 / 2채널 온도 데이터로거
productName: tH1UV9 잔류염소 TEST 롤형 염소농도 테스트지 1p
productName: [관부가세포함] ZEISS Siemens Star Test Chart
productName: 휴대용 산도계(TEST KIT)
productName: [프로텍] 리드선(TEST LEAD) / 아날로그용
productName: Zeyuan 용접 게이지 용접 천사 검사 게이지 Ulnar Test Ruler
productName: UEi Test Instruments Em201Spkit 정전기 압력 키트
productName: 14 플라스틱 수분계 테스트 용기 14 Plastic Hydrometer Test Jar
productName: Clearblue Digital Pregnancy Test 테스트기 5개입
productName: Cal Test CT3681 오실로스코프 고전압 차동프로브 70MHz
productName: 원포 패스터 임신테스트기 임테기 1test x 10박스
productName: (관부가세포함) INSIZE 6293-3 Dial Test Indicator Holder
productName: SAMDUK 눈금시험관 시험관 Graduated Test Tube
productName: [계측기코리아] HIOKI L4938 TEST PIN SET 리드선
productName: Ars50-Quic2, 지하수,유해물질 비소검사, Arsenic Test Kit
productName: 금속 성분분석기 ,SPECTRO TEST
productName: [ACUBA] 아쿠바 PH 테스트페이퍼 스틱형 100개입 - PH TEST PAPER
productName: FLUKE 700PTP-1 공압식 테스트펌프 Pneumatic Test Pump
productName: [ADVANTEC] PH시험지(PH Test Paper)
productName: MQuant Total Hardness Test 총경도 테스트지
productName: SureGrip Industrial Test Lead Set Fluke FLUTL222
productName: TOYOTECH TL-700 LCR-METER TEST LEAD 액세서리
productName: 염소농도 테스트 페이퍼 CM-240 (Chorine Test Paper)
productName: 이가게뭐야 랜 테스터기 POE 전압체크 Ping test지원
productName: [플루크] TL75 테스트 리드 세트 / TEST LEAD SET / FLUKE 테스터기용 리드선
productName: KYORITSU 교리츠 교리쯔 PACK TEST 간이 수질검사팩
productName: TEST 606-2 디지털 목재수분계 독일 포켓용 수분계
productName: IKA MS1.32 Test tube insert Φ12mm 6개
productName: Muscletech Test HD 하드코어 테스토스테론 부스터 90
productName: Arcotest 친환경 다인펜 (Test Pen PINK) -표준세트(8개)
productName: 랜테스터기 POE 전압체크 Ping test지원 케이블탐지
--- page 2 ---
len(products): 40
productName: HI3810 용존산소 측정키트 Oxygen Chemical Test Kit
productName: DC2C/건식 가스미터 가스미타 DRY TEST GAS METER
productName: 다다 다다 리드선 MET-500용 리드선 TEST LEAD
productName: 다다 다다 리드선 MET-500용 리드선 TEST LEAD
productName: KYORITSU PACK TEST 간이 수질검사팩
productName: [ACUBA] 아쿠바 PH TEST PAPER (PH 테스트 시험지) 50개입
productName: 샘아쿠아 API Ph Test Kit pH 테스트 키트/ 물 수질 측정
productName: BK Precision TL89S1 SMD Test Fixture (테스트 픽스쳐)
productName: 10ml 유리 테스트 컬쳐 튜브 Test tube, Glass
productName: 라텍스kit 살모넬라용 100test
productName: PKG575464잔류염소 테스트지 롤형 TEST 1p 염소농도
productName: [독일] Phoenix Contact Multimeter Test Fox M-1, 1212209
productName: [프로텍] 리드선(TEST LEAD) / 디지털용
productName: UEi Test Instruments Digital 검정
productName: [TOYOTECH] 도요테크 / TOYOTECH TEST LEAD / 각종 테스트 리드선
productName: 이상적인 산업 C-90 모든 Vol-Con 및 Vol-Test 전압 테스터와 함께 사용할
productName: OTC 3587 터미널 테스트 키트 OTC 3587 Terminal Test Kit
productName: 세이플린 임신진단 테스트기 1TEST x3개 /임테기
productName: Cal Test CT3687 오실로스코프 차동프로브 100MHz
productName: pH Test paper / ADVANTEC / BCG pH 4.0-5.6
productName: [계측기코리아] HIOKI L2200 TEST LEAD 테스트 리드
productName: pH농도 측정시험지 유니버셜-UNIV(pH test paper)측정범위 PH1~11
productName: (관부가세포함) YSI Photometer Test Kit - YPM114
productName: FA-1290 테스터 리드봉 (PT-802) Test Leads
productName: B50-Brom 브롬검사키트, Bromine Test Kit ITS 측정키트
productName: IKA VG3.33 Test tube insert Φ12mm 12개
productName: [플루크] TL71 / Fluke Premium Test Lead Set / 테스터리드 / DMM용 프리미엄 테스트리드선
productName: [ACUBA] 아쿠바 PH 테스트페이퍼 스틱형 100개입 - PH TEST PAPER
productName: BK Precision TL 1 Sheathed Test Lead Set (테스트 리드)
productName: DC 5C M/건식 가스미터 가스미타 DRY TEST GAS METER
productName: 다다 다다 리드선 MET-500용 리드선 TEST LEAD
productName: TEST 606-2 디지털 목재수분계 독일 포켓용 수분계
productName: 라인샵-TEST 606-2 디지털 목재수분계 독일 포켓용 수
productName: [독일] FLUKE TL175 - Twistguard test tips
productName: 잔류염소 TEST 롤형 염소농도 테스트지 1p
productName: [태광] 리드선(TEST LEAD) / 포켓용 외
productName: UEi Test Instruments Digital 검정
productName: 월드몰 G102 103 로즈골드 다리 높은 1200 거실수납장 TEST
productName: 14 플라스틱 수분계 테스트 용기 14 Plastic Hydrometer Test Jar
productName: 세이플리 임신진단 테스트기 1TEST x3개 /임테기