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 test_url_verify_function(self): url1 = "www.google.com" url2 = "http://www.google.com" url3 = "http//www.google.com" url4 = "http:/www.google.com" self.assertEqual(StringUtil.verifyUrl(url1), False) self.assertEqual(StringUtil.verifyUrl(url2), True) self.assertEqual(StringUtil.verifyUrl(url3), False) self.assertEqual(StringUtil.verifyUrl(url4), False)
def deal_with_bu_info(self, vul, content): bu_map = {} bu_block_elem = content.find_all(id='NewTileListComponent') if bu_block_elem is not None and len(bu_block_elem) > 0: for ulElem in bu_block_elem[0].find_all('ul'): for liElem in ulElem.find_all('li'): bu, created = BusinessUnit.objects.get_or_create(name=StringUtil.normalize(liElem.get_text())) bu.save() bu_map[StringUtil.normalize(liElem['itemindex'])] = bu return bu_map
def parse_tbl_row(self, table_row): td_elems = table_row.find_all('td') if len(td_elems) == 0: return None strs = list(td_elems[0].strings) lenovo_code = StringUtil.normalize(strs[0]) description = StringUtil.normalize(strs[1]) a_elems = td_elems[0].find_all('a') link = self.lenovoSupportHome + a_elems[0]['href'] firstDate = StringUtil.normalize(td_elems[1].string) lastDate = StringUtil.normalize(td_elems[2].string) return Vulnerability(lenovoCode=lenovo_code, description=description, link=link, firstPublishedDate=firstDate, lastUpdatedDate=lastDate)