Я пытался заставить Scrapy загрузить все PDF-файлы с веб-сайта, однако я не могу заставить его фактически загружать файлы. Сканер работает нормально и переходит на все страницы URL-адреса, однако ничего не загружается.
Я новичок в Python и веб-скрейпинге, поэтому я не уверен, что я просто упускаю из виду или не понимаю, как связать проблемы других людей со своими. Я следил за несколькими учебными пособиями и пошаговыми руководствами с веб-сайта Scrapy и других, но я просто не могу понять это.
Кроме того, я также хотел бы загрузить только файлы, содержащие spec_sheet, если это возможно (расположенные в разделе загрузок любого из источников света на веб-сайте, а также назвать PDF-файлы теми, которые они есть на веб-сайте, а не строку случайных букв и номера, когда они загружаются.
Любая помощь приветствуется!
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
ITEM_PIPELINES = {'scrapy.pipelines.files.FilesPipeline': 1}
FILES_STORE = '/Users/lukewoods/Desktop/AppDev/LightingPDFs/Martin'
class ZipfilesItem(scrapy.Item):
file_urls = scrapy.Field()
files = scrapy.Field()
class MartinSpider(CrawlSpider):
name = 'martinspider'
start_urls = ['https://www.martin.com/en/']
rules = (
Rule(LinkExtractor(allow=r'products/'), callback='parse_item', follow=True),
Rule(LinkExtractor(allow=r'product_families/'), callback='parse_item', follow=True),
Rule(LinkExtractor(allow=r'discontinued_products/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
file_url = response.xpath(("//tr[@class='download-item-row']/a/@href")).get()
file_url = response.urljoin(file_url)
item = ZipfilesItem()
item['file_urls'] = [file_url]
yield item