def parse(self, response): for entry in response.xpath( "//div[@class='menu2']//table//table//table[2]//td[1]//td[2]"): desc = entry.xpath(".//text()").extract() for link in entry.xpath(".//a"): href = link.xpath("./@href").extract()[0] text = link.xpath(".//text()").extract()[0] if "_a=download" not in href: yield Request(url=urllib.parse.urljoin(response.url, href), headers={"Referer": response.url}, meta={"product": text.strip().split(' ')}, callback=self.parse) elif "firmware" in text.lower() or "f/w" in text.lower(): item = FirmwareLoader(item=FirmwareImage(), response=response, date_fmt=["%m/%d/%Y", "%m/%d/%y"]) item.add_value("version", FirmwareLoader.find_version(desc)) item.add_value("date", item.find_date(desc)) item.add_value("description", text) item.add_value("url", href) item.add_value("product", response.meta["product"]) item.add_value("vendor", self.name) yield item.load_item()
def parse_download(self, response): for entry in response.xpath("//div[@class='downloadtable']"): text = entry.xpath(".//text()").extract() if "firmware" in " ".join(text).lower(): text = entry.xpath( ".//li[@class='maindescription' and position() = 1]//text()" ).extract() date = entry.xpath( ".//li[@class='maindescription' and position() = 2]//text()" ).extract() href = entry.xpath( ".//li[@class='maindescription']//a/@onclick" ).extract()[0].split( '\'')[1] + "&button=Continue+with+Download&Continue=yes" item = FirmwareLoader(item=FirmwareImage(), response=response, date_fmt=["%m/%d/%Y"]) item.add_value("url", href) item.add_value("product", response.meta["product"]) item.add_value("date", item.find_date(date)) item.add_value("version", FirmwareLoader.find_version(text)) item.add_value("vendor", self.name) yield item.load_item()
def parse(self, response): for entry in response.xpath( "//div[@class='menu2']//table//table//table[2]//td[1]//td[2]"): desc = entry.xpath(".//text()").extract() for link in entry.xpath(".//a"): href = link.xpath("./@href").extract()[0] text = link.xpath(".//text()").extract()[0] if "_a=download" not in href: yield Request( url=urlparse.urljoin(response.url, href), headers={"Referer": response.url}, meta={"product": text.strip().split(' ')}, callback=self.parse) elif "firmware" in text.lower() or "f/w" in text.lower(): item = FirmwareLoader(item=FirmwareImage(), response=response, date_fmt=["%m/%d/%Y", "%m/%d/%y"]) item.add_value("version", FirmwareLoader.find_version(desc)) item.add_value("date", item.find_date(desc)) item.add_value("description", text) item.add_value("url", href) item.add_value("product", response.meta["product"]) item.add_value("vendor", self.name) yield item.load_item()
def parse(self, response): product = None for section in response.xpath("//div[@class='product-content']/div[@class='product-box2']/div"): text = section.xpath(".//text()").extract() if not section.xpath(".//a"): product = text[0].strip() else: for link in section.xpath(".//a/@href").extract(): if link.endswith(".html"): yield Request( url=urllib.parse.urljoin(response.url, link), meta={"product": product, "version": FirmwareLoader.find_version(text)}, headers={"Referer": response.url}, callback=self.parse_download)
def parse(self, response): product = None for section in response.xpath("//div[@class='product-content']/div[@class='product-box2']/div"): text = section.xpath(".//text()").extract() if not section.xpath(".//a"): product = text[0].strip() else: for link in section.xpath(".//a/@href").extract(): if link.endswith(".html"): yield Request( url=urlparse.urljoin(response.url, link), meta={"product": product, "version": FirmwareLoader.find_version(text)}, headers={"Referer": response.url}, callback=self.parse_download)
def parse_download(self, response): for entry in response.xpath("//div[@class='downloadtable']"): text = entry.xpath(".//text()").extract() if "firmware" in " ".join(text).lower(): text = entry.xpath( ".//li[@class='maindescription' and position() = 1]//text()").extract() date = entry.xpath( ".//li[@class='maindescription' and position() = 2]//text()").extract() href = entry.xpath(".//li[@class='maindescription']//a/@onclick").extract()[ 0].split('\'')[1] + "&button=Continue+with+Download&Continue=yes" item = FirmwareLoader( item=FirmwareImage(), response=response, date_fmt=["%m/%d/%Y"]) item.add_value("url", href) item.add_value("product", response.meta["product"]) item.add_value("date", item.find_date(date)) item.add_value("version", FirmwareLoader.find_version(text)) item.add_value("vendor", self.name) yield item.load_item()