Beispiel #1
0
    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()
Beispiel #2
0
    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()
Beispiel #3
0
    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()
Beispiel #4
0
 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)
Beispiel #5
0
 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)
Beispiel #6
0
    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()