web-scraping - 为什么我的代码在我的 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()
我希望输出不应该重复,但每次运行代码时都会重复几乎一半和更多数量的数据。
解决方案
推荐阅读
- dns - 从 Plesk 服务器获取旧邮件,移动到同域名的 CPanel 服务器
- sonos - 首次使用 Sonos Acme 服务时出错
- python - 如何从类中调用启动函数
- mongodb - 200status 但集合仍然为空
- ruby-on-rails - 如何在 Rails 5 中为这个 JSON 响应提供正确的格式?
- c# - 触发的 Web 作业完全执行,然后在 121 秒后超时中止
- linux - 如何遍历 bash sqlcmd 输出
- r - 如何从 chart.correlation 函数中删除显着性星
- apache - 找不到记录器的附加程序(org.apache.accumulo.start.classloader.AccumuloClassLoader)
- swift - 使用 Youtube 播放器库关闭视频