웹 사이트의 구조를 정의하는 링크가 있습니다. 이러한 링크에서 이미지를 다운로드하는 동안 다운로드 한 이미지를 웹 사이트 구조와 비슷한 폴더 구조에 넣고 이름을 변경하지 않고 (Scrapy image download how to use custom filename)Scrapy : 이미지를 다운로드하는 URL을 기반으로 다운로드 한 이미지 중 폴더 구조를 만듭니다.
내 코드는 다음과 같습니다.
class MyImagesPipeline(ImagesPipeline):
"""Custom image pipeline to rename images as they are being downloaded"""
page_url=None
def image_key(self, url):
page_url=self.page_url
image_guid = url.split('/')[-1]
return '%s/%s/%s' % (page_url,image_guid.split('_')[0],image_guid)
def get_media_requests(self, item, info):
#http://store.abc.com/b/n/s/m
os.system('mkdir '+item['sku'][0].encode('ascii','ignore'))
self.page_url = urlparse(item['start_url']).path #I store the parent page's url in start_url Field
for image_url in item['image_urls']:
yield Request(image_url)
그것은 필요한 폴더 구조를 만들지 만 deapth의 폴더에 들어가면 폴더에 파일이 잘못 배치 된 것으로 나타납니다.
"get_media_requests"및 "image_key"함수가 비동기 적으로 실행될 수 있으므로 "page_url"의 값이 "image_key"함수에서 사용되기 전에 변경되므로이 문제가 발생하는 것으로 의심됩니다.
거미의 경로를 계산하고 경로를 항목 속성으로 계산하는 것이 더 정확합니까? – dm03514
@ dm03514 항목 경로로 필요한 경로가 있지만 "image_key"함수의 "item"개체에 액세스 할 수 없습니다. –
@GauravToshniwal 의심 스럽습니다. 폴더가 생성되고 있음을 보여주는 코드가 보이지 않습니다. 내부 구조가 어떻게 작동하는지 알 수 있습니까? – igaurav