Пользовательское имя файла из очищенного элемента с помощью scrapy - PullRequest
0 голосов
/ 30 октября 2019

Я видел Загрузка файла Scrapy, как использовать пользовательское имя файла , и мой вопрос заключается в том, как мне продвинуть этот код, добавив удаленный элемент со страницы к имени файла? Я создал элемент, который содержит имя файла, но как мне получить доступ к этому элементу или передать его в конвейер file_urls? Я попытался использовать ответ для повторной пометки элемента, но мой метод где-то выключен.

def doc_page(self, response):
    tr = response.xpath('//tr/td/a').attrib['href']
    if tr is not None:
        next_page = response.urljoin(tr)
    # desired preceeding filename    
    filename = 'MSFT_' + \
                   response.xpath('(//tr/td[2]//text()').get() + /
                   '_' + response.xpath('.//div[contains(@class, 
                   "formContent")]').xpath('.//div[contains(@class, "info")]\
                   [2]//text()').get()
        loader = ItemLoader(item=SecScrapeItem(), selector=next_page)
        loader.add_value('file_urls', next_page)
        if filename:
            loader.add_value('myFile', filename)
        yield loader.load_item()

def file_path(self, request, response=None, info=None):
    original_path = super(SecScrapePipeline, self).file_path(request, response=None, info=None)
    sha1_and_extension = original_path.split('/')[1]  # delete 'full/' from the path
    return request.meta.get('filename', '') + item['myFile'] + "_" + sha1_and_extension
def function(foo):
    print(foo)

Я хочу, чтобы вывод был 'MSFT_10-K_2018-08-03' + SHA1_extension, ноЯ могу получить только SHA1_extension

Любые мысли будут полезны!

...