首页 > 解决方案 > 为什么我的代码在我的 Excel 工作表中保存了更多的重复数据?

问题描述

实际上,此代码通常用于从网站上抓取数据,但问题是更多数量的重复数据正在生成并保存在我的 Excel 工作表中。

def extractor():
time.sleep(10)
souptree = html.fromstring(driver.page_source)
tburl = souptree.xpath("//table[contains(@id, 'theDataTable')]//tbody//tr//td[4]//a//@href")
for tbu in tburl:
    allurl = []
    allurl.append(urllib.parse.urljoin(siteurl, tbu))
    for tb in allurl:
        get_url = requests.get(tb)
        get_soup = html.fromstring(get_url.content)
        pattern = re.compile("^\s+|\s*,\s*|\s+$")
        name = get_soup.xpath('//td[@headers="contactName"]//text()')
        phone = get_soup.xpath('//td[@headers="contactPhone"]//text()')
        mail = get_soup.xpath('//td[@headers="contactEmail"]//a//text()')
        artitle = get_soup.xpath('//td[@headers="contactEmail"]//a//@href')
        artit = ([x for x in pattern.split(str(artitle)) if x][-1])
        title = artit[:-2]
        for (nam, pho, mai) in zip(name, phone, mail):
            fname = nam[9:]
            allmails.append(mai)
            allnames.append(fname)
            allphone.append(pho)
            alltitles.append(title)
            fullfile = pd.DataFrame({'Names': allnames, 'Mails': allmails, 'Title': alltitles, 'Phone Numbers': allphone})
            writer = ExcelWriter('G:\\Sheet_Name.xlsx')
            fullfile.to_excel(writer, 'Sheet1', index=False)
            writer.save()
            print(fname, pho, mai, title, sep='\t')


while True:
    time.sleep(10)
    extractor()
    try:
        nextbutton()
    except (WebDriverException):
        driver.refresh()
    except(NoSuchElementException):
        time.sleep(10)
        driver.quit()

我希望输出不应该重复,但每次运行代码时都会重复几乎一半和更多数量的数据。

标签: web-scraping

解决方案


推荐阅读