728x90
반응형
G마켓 best품목 중 각 클래스에 대해서 100개의 상품이 나열되어 있음
이 중 상품 명, 가격을 크롤링 한 후, 파일로 저장
>페이지에서 특정 값을 갖고 오고 싶을 땐
인터넷 창에서 F12눌러서 해당 파트 찾은 후, 우클릭 한다음 copy>copy selector를 통해 복사하면 자동으로 해당 파트를 받아오는 코드가 카피된다.
ex)
#skip-navigation-container > div.section__main.section__main-best > div > div > div > div > button.button__next
이 값을 Beautifulsoup 객체의 select_one 함수의 input으로 넣음 된다.
import requests
from bs4 import BeautifulSoup
index = 0
file = open("./gmarket_result.txt", "a")
while True:
index += 1
if index > 9:
url = "http://corners.gmarket.co.kr/Bestsellers?viewType=G&groupCode=G%s"%str(index)
else:
url = "http://corners.gmarket.co.kr/Bestsellers?viewType=G&groupCode=G0%s"%str(index)
response = requests.get(url)
print('PageNo: ', index)
if response.status_code == 200:
html = response.text
soup = BeautifulSoup(html, 'html.parser')
for idx in range(1, 101):
selector_nm = soup.select_one("#gBestWrap > div > div:nth-child(5) > div:nth-child(3) > ul > li:nth-child("+str(idx)+") > a")
try:
product_nm = str(selector_nm).split(">")[-2][:-3]
except:
file.close()
assert()
selector_price = soup.select_one("#gBestWrap > div > div:nth-child(5) > div:nth-child(3) > ul > li:nth-child("+str(idx)+") > div.item_price > div.o-price > span > span")
if selector_price ==None:
selector_price = soup.select_one("#gBestWrap > div > div:nth-child(5) > div:nth-child(3) > ul > li:nth-child("+str(idx)+") > div.item_price > div.s-price > strong > span > span")
try:
price = str(selector_price).split(">")[1][:-6]
except:
import pdb; pdb.set_trace()
print(product_nm, " ", price)
line = product_nm+"\t"+price+"\n"
file.write(line)
else:
print(response.status_code)
assert()
print('FINISHED')
728x90
반응형
'사소한 Tip . 오류 해결법 > python' 카테고리의 다른 글
[python] list 중복 제거(순서 유지(OrderedDict, Dict), 순서 무관(set)) (0) | 2022.03.30 |
---|---|
[python]특정 경로 내 파일 존재 유무 확인 (0) | 2022.03.16 |
[python/pytorch] Model GPU 메모리 사용량 체크 (0) | 2022.03.11 |
[python, layout-parser] pdf에서 정보 뽑기/ Extracting information from PDF file (0) | 2022.01.11 |
[python] File Copy, shutil filecopy (0) | 2022.01.06 |