미니언올라퓨맹
176
2020-01-16 14:07:41
7
473

이미지 크롤링 연속적으로 하고 싶은데 어떻게 해야될까요,,?


import urllib.request
picture_url = "https://antiquorum-swiss-assets.s3.us-west-2.amazonaws.com/images/324/lots/1/medium_1.jpg"
savename = f'{1.1}.png'
urllib.request.urlretrieve(picture_url, savename)
print('저장완료')
이렇게 하면 사진 한개의 이미지는 저장이 되는데 저 마지막 숫자만 바뀌면 여러가지의 사진을 크롤링 할 수 있는데 안됩니다ㅜㅜ 혹시 아시는분 계실까요ㅠㅠ?
import urllib.request
from bs4 import BeautifulSoup
from selenium import webdriver
driver = webdriver.Chrome('./chromedriver')
driver.get('https://www.antiquorum.swiss/')
driver.find_elements_by_xpath('//*[@id="menu-item-1762"]/a')[0].click()
driver.find_elements_by_xpath('//*[@id="menu-item-1120"]/a')[0].click()
driver.find_elements_by_xpath('//*[@id="auctions"]/div[2]/div[2]/div[3]/a[1]')[0].click()
new_page = driver.get(driver.current_url)
html = urllib.request.urlopen(new_page)
source = html.read()
soup = BeautifulSoup(source, 'html.parser')
value_bsobj = soup.select("p")
brand = value_bsobj[5].text[6:]
model = value_bsobj[6].text[6:]
#리스트에서 프로그램 멈춤
for i in range(2, 869, 1):
new_url = driver.find_element_by_xpath('/html/body/div/div/div[2]/div[1]/div['+ str(i) +']/a').click()
html = urllib.request.urlopen(new_url)
source = html.read()
soup = BeautifulSoup(source, 'html.parser')
value_bsobj = soup.select("p")
brand = value_bsobj[5].text[6:]
model = value_bsobj[6].text[6:]
driver.switch_to.window(driver.window_handles[1])
picture_url = "https://antiquorum-swiss-assets.s3.us-west-2.amazonaws.com/images/324/lots/['+ str(i) +']/['+ str(i) +'].jpg"
savename = f'{brand} {model}.png'
urllib.request.urlretrieve(picture_url, savename)
print('저장완료')
driver.close()
driver.switch_to.window(driver.window_handles[0])
0
  • 답변 7

  • 니르바나
    2k
    2020-01-16 14:37:40

    다음부터 질문하실땐 에러메시지도 같이 첨부해주시면 좋을것 같습니다.

    이렇게 고쳐보세요~

    html = urllib.request.urlopen(driver.current_url)


    그리고current_url은 https://catalog.antiquorum.swiss/en/auctions/324/price-list

    이 url인데 그 a tag들 다 가져와서 하나씩 들어가서 이미지 주소를 알아내야할것 같은데요..

    다른 방식으로 이미지 위치를 알 수 있는 방법이 있으시면 해당 리스트 정보가지고 이미지 가져오셔도 될것 같습니다.

    담 value_bsojbj 아래쪽 코드들은 수정하셔야할 것 같아요.

  • 미니언올라퓨맹
    176
    2020-01-16 15:55:52
  • star16m
    721
    2020-01-16 16:00:30

    이거를

    picture_url = "https://antiquorum-swiss-assets.s3.us-west-2.amazonaws.com/images/324/lots/['+ str(i) +']/['+ str(i) +'].jpg"

    이렇게 바꿔야 돌 겁니다.

    picture_url = "https://antiquorum-swiss-assets.s3.us-west-2.amazonaws.com/images/324/lots/"+ str(i) +"/"+ str(i) +".jpg"


  • 니르바나
    2k
    2020-01-16 16:17:26

    python에서 문자 합치는건 +로 해주시면되요.

    제 pc에서는 테스트하니 for문 돌기전에 죽더라구요.

    만약에 for문까지 정상적으로 돌면 아래와 같이 짜시면 정상적으로될거에요.

    결과적으로 윗분거랑 똑같네요.

    "https://antiquorum-swiss-assets.s3.us-west-2.amazonaws.com/images/324/lots/"+i+"/"+i+".jpg"
  • 미니언올라퓨맹
    176
    2020-01-16 17:40:04

    말씀 하신대로 코드 바꿔서 디버깅 해보았는데 사진 url바뀌는게 안먹히는거 같네요ㅠㅠㅠ

  • 니르바나
    2k
    2020-01-17 13:21:19
    디버깅 해서 url찍힌걸로 직접 들어가보세요.
    이미지 잘 찍히는지요.
    그게잘되면 url은 정상이고 다른문제이니까요
  • 로그인을 하시면 답변을 등록할 수 있습니다.