๋จผ์ url์ ๋ฐ๋๋ค
baseUrl = 'https://store.musinsa.com/app/product/search?search_type=1&q='
baseUrl1 = '&page='
plusUrl = input('๊ฒ์ํ ์ท์ ์ ๋ ฅํ์์ค: ')
pageNum =1
url = baseUrl + quote_plus(plusUrl) + baseUrl1 + str(pageNum)
quote_plus๋ ํน์๋ฌธ์๋ ๋ค๋ฅธ ํ์์ ๋ฌธ์๋ฅผ ์์คํค ์ฝ๋๋ก ๋ณํํด์ฃผ๊ณ ๊ณต๋ฐฑ์ '+'๋ก ๋ณํํ๋ค. ์ฐธ๊ณ ๋ก, quote()๋ ๊ณต๋ฐฑ์ '%20'์ผ๋ก ๋ณํํ๋ค.
์ด๋ฅผ ์ด์ from selenium import webdriver ์ ์ด์ฉํด์ webdriver.Chrome()์ผ๋ก ์ด์๊ฐ ์๋๊ฒ์ด๋ค. ์ด๊ฒ ๋ฌด์จ ๋ง์ด๋๋ฉด selenium์ ์ด์ฉํด์ ํ์ด์ง๋ฅผ ์ฌ๋ ๊ฒ์ธ๋ฐ....์ ์ ์กฐ๊ฑด์ด Chrome ๋๋ผ์ด๋ฒ๊ฐ ์ค์น๊ฐ ๋์์์ด์ผ ํ๋ค. ๊ทธ๋์ Chrome() ์ ๊ดํธ ์์ ๋๋ผ์ด๋ฒ๊ฐ ์ค์น ๋์ด ์๋ ์ฃผ์๋ฅผ ๋ฃ์ด์ค๋ค.
ํ์๋ ๋๋ผ์ด๋ฒ์ ์ ์ฅ ์์น๊ฐ ํ๋ก์ ํธ ํด๋์ ๋ฐ๋ก ์์นํ๊ธฐ์ ๋ฃ์ด์ค ํ์๊ฐ ์์๋ค.
driver.get(url) #url์ผ๋ก ํ์ด์ง๋ฅผ ๋ถ๋ฌ์จ๋ค
time.sleep(3) # ์์์ ๋ถ๋ฌ์ค๊ณ ๋ช์ด ๊ธฐ๋ค๋ฆฐํ์ ๋ถ์์ ์์
time์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ import time์ด ํ์ํ๋ค.
๋ถ์์ ํ ๋์๋ BeautifulSoup์ ์ด์ฉํ๋ค.
from bs4 import BeautifulSoup์ ์์ ์ ์ธํด์ฃผ๊ณ
pageString = driver.page_source
soup = BeautifulSoup(pageString, features="html.parser")
๋ก ํ์ด์ง๋ฅผ ํ์ฑํด์ค๋ค. ์ด๋ BeautifulSoup์์ ์ ๊ณตํด์ฃผ๋ ๊ธฐ๋ฅ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ๊น์ง๋ ๋ชจ๋ ํ์ด์ง๋ฅผ ํ์ฑํ ๋ ๋์ผ ํ ๊ฒ์ด๋ค. ์ฌ๊ธฐ์ ๋ถํฐ ์ง์ ํ์ด์ง๋ฅผ ๋ณด๋ฉด์ ๋ถ์์ ํด์ผํ๋๋ฐ...
์์ ๋งจํฌ๋งจ ์ด๋ฏธ์ง๋ค์ ํฌ๋กค๋ง ํ๊ณ ์ถ๋ค.
๊ทธ๋ฌ๋ฉด ์ ์ด๋ฏธ์ง๊ฐ ์ด๋ tag์ ์๋์ง๋ฅผ ์ฐพ๊ณ ๋ ๊ฑฐ๊ธฐ tag ์์์ ๊ฐ๊ฐ ์ด๋ฏธ์ง ์ ๋ณด์ ํด๋นํ๋ ํ์ tag์์ attribute ๊ฐ์ ์ฐพ๊ธฐ๋ง ํ๋ฉด ๋๋ค... ๋ง์ ์ฝ๋ค..
1. ๋จผ์ ์ ํ๋ ํ ๋๋ฆฌ๋ฅผ ์ฐพ๋๋ค
:์ ํ๋ ํ ๋๋ฆฌ๋ ํ๋๋ง ๊ฐ์ ธ์ค๋ฉด ๋๋๊น
result1 = soup.find(name = 'ul', attrs ={'class':'snap-article-list boxed-article-list article
list center list goods_small_media8'})
๋ก ๊ฐ์ ธ์จ๋ค. ๊ทธ๋ฌ๋ฉด result1์๋ ์ ํ ๋๋ฆฌ์ ํด๋นํ๋ HTML ์ฝ๋๊ฐ ์ ์ฅ๋๋ ๊ฒ์ด๋ค.
2. ํ๋ ํ ๋๋ฆฌ์ ์ด๋ก ์ด๋ฏธ์ง ๋ค์ ๊ฐ์ ธ์ค์!
:result2 = result1.find_all(name ="img")์ ์ฌ์ฉํ์ฌ์ ๊ฐ๊ฐ์ img ํ๊ทธ๋ฅผ ์ ์ฅํ๋๋ฐ ์ด๋ result2๊ฐ ๋ฐฐ์ด ํ์์ผ๋ก ์ ์ฅ๋๊ฒ ๋๋ค.
3. ๋ด๊ฐ ๊ฐ์ ธ์ค๊ณ ์ถ์ attribute ๊ฐ์ ์ฐพ์
: ์ฒ์์ ์ด๋ฏธ์ง ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ src์์ฑ์ ๊ฐ์ ธ์๋๋ฐ ๊ทธ๋ฌ๋๊น ๋งจํฌ๋งจ ์ด๋ฏธ์ง ๋ง๊ณ ๋ ์ ๊ธฐ ๋ฐ์ ํํธํ์ ์ด๋ฏธ์ง ๋ํ ๊ฐ์ ธ์ ๋ฒ๋ ธ๋ค... ๊ทธ๋์ ์ท ์ด๋ฏธ์ง ์ ๋ณด๋ง์ ํํํ๋ data-original ์์ฑ์ ๊ฐ์ ธ์ค๋๊ฒ ๋ ๋ซ๋ค๊ณ ํ๋จํ์ฌ์ ์๋ ์ฝ๋ ๋๋ก ์ํํด ์คฌ๋ค...(์ด ์์ฑ ์ ๋ณด์ ํ๊ทธ ์ด๋ฆ ๊ฐ์ ๊ฒ์ ํ์ด์ง ๋ง๋ค ๋ค๋ฅด๋ ๊ฐ์ ํ๊ธฐ์ ์ ๋ถ์ํด๋ณด์ธ์)
for i in result2:
try:
image = i.attrs['data-original']
reallink.append(image)
except:
continue
์ ์ด์ฉํด์ ์ด๋ฏธ์ง url์ ๊ฐ๊ฐ reallink์ ๋ฃ๋๋ค.
์ด์ ๊ฐ์ ธ์จ url์ ๋ด pc์ ์ ์ฅํ๊ธฐ ์ํด์
urllib.request.urlretrieve(์ด๋ฏธ์ง url , ์ ์ฅํ๊ณ ์ถ์ pc ๊ฒฝ๋ก)
์ฝ๋
import urllib.request
from urllib.parse import quote_plus #์์คํค ์ฝ๋๋ก ๋ณํํด์ค๋ค
from bs4 import BeautifulSoup
from selenium import webdriver
import time
#ํด๋น ํ์ด์ง๋ฅผ ํฌ๋กค๋ง i๊ฐ ํ์ด์ง๋ฒํธ
def musinsaCrawling(pageNum):
baseUrl = 'https://store.musinsa.com/app/product/search?search_type=1&q='
baseUrl1 = '&page='
url = baseUrl + quote_plus(plusUrl) + baseUrl1 + str(pageNum)
driver = webdriver.Chrome()
driver.get(url)
time.sleep(3) # ์์์ ๋ถ๋ฌ์ค๊ณ 1์ด ๊ธฐ๋ค๋ฆฐํ์ ๋ถ์์ ์์
pageString = driver.page_source
soup = BeautifulSoup(pageString, features="html.parser")
result1 = soup.find(name = 'ul', attrs ={'class':'snap-article-list boxed-article-list article-list center list goods_small_media8'})
result2 = result1.find_all(name = "img")
for i in result2:
try:
image = i.attrs['data-original']
reallink.append(image)
except:
continue
print(reallink)
driver.close()
plusUrl = input('๊ฒ์ํ ์ท์ ์
๋ ฅํ์์ค: ')
reallink = []
baseUrl = 'https://store.musinsa.com/app/product/search?search_type=1&q='
baseUrl1 = '&page=1'
url = baseUrl + quote_plus(plusUrl) + baseUrl1
driver = webdriver.Chrome()
driver.get(url)
time.sleep(3) #์์์ ๋ถ๋ฌ์ค๊ณ 3์ด ๊ธฐ๋ค๋ฆฐํ์ ๋ถ์์ ์์
pageString = driver.page_source
soup = BeautifulSoup(pageString, features="html.parser")
pageNum = int((soup.find("span",{"class" : "totalPagingNum"})).text)
print(pageNum)
driver.close()
for i in range(1,pageNum+1):
musinsaCrawling(i)
print(reallink)
if plusUrl == '์ค๋ชฐ๋ก๊ณ ๋งจํฌ๋งจ':
title = 'small logo sweatshir'
elif plusUrl == '๋น
๋ก๊ณ ๋งจํฌ๋งจ':
title = 'big logo sweatshir'
elif plusUrl =='์คํธ๋ผ์ดํ๋งจํฌ๋งจ':
title = 'stripe sweatshir'
print('title = ' + title)
n = 1
for i in range(0,len(reallink)):
urllib.request.urlretrieve( "http:"+reallink[i],"C:\\Users\\PycharmProjects\\untitled7\\stripes sweat shirt\\" +title + "("+str(n)+")"+".jpg")
n +=1
'๊ธฐํ(๊ฐ๋ฐ) > ํฌ๋กค๋ง(Crawling)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ์ธ์คํ๊ทธ๋จ ํฌ๋กค๋ง ํ๊ธฐ(instagram Crawling) (1) | 2019.11.29 |
---|