def parse_products_detail(self, buKey, bu, vul, productsContentBlockList): bu_prod_block_list = [] for productsContentBlock in productsContentBlockList: bu_prod_block_list = productsContentBlock.find_all('div', itemindex=buKey) if len(bu_prod_block_list) != 0: break if len(bu_prod_block_list) != 0: products_table = bu_prod_block_list[0].table products_rows = products_table.find_all('tr') if len(products_rows) > 0: for index in range(1, len(products_rows)): row = products_rows[index] columns = row.find_all('td') product, created = Product.objects.get_or_create( name=StringUtil.normalize(columns[0].get_text())) product.save() bp, created = BUAndProdRelationship.objects.get_or_create(bu=bu, product=product) if created: bp.save() pv, created = ProdAndVulRelationship.objects.get_or_create(product=product, vul=vul) if created: if len(columns) == 2: pv.status = DataConvert.convert_status_to_integer(columns[1].get_text()) elif len(columns) == 4: pv.status = DataConvert.convert_status_to_integer(columns[1].get_text()) pv.fixedVersion = StringUtil.normalize(columns[2].get_text()) pv.downloadLink = StringUtil.normalize(columns[3].get_text(), ep=False) else: pass pv.save()
def extract_severity(self, pure_text_of_content): result = re.findall(self.severityRep, pure_text_of_content) if len(result) == 0: return "" else: severity = result[0].split(" ")[-1] return DataConvert.convert_severity_to_integer(severity)