【发布时间】:2021-03-22 15:29:33
【问题描述】:
我正在尝试加快 python 代码将超市网站的 Xpath(商店营业时间和营业时间)提取到 excel 文件。我使用的代码有效,但是它需要添加额外的代码行,包括新的网址和行标识符。
我有一个包含所有需要访问的网址的文本文件,并且到目前为止,每个网址的 Xpath 都是相同的。 python可以读取任意网址的文件列表提取Xpath(存储时间)并输出到excel文件而不用写很多行代码吗?
import selenium
from selenium import webdriver
import pandas as pd
import time
def s1():
driver = webdriver.Chrome('C:/Users/Me/Documents/PY/chromedriver.exe')
driver.get("https://local.albertsons.com/mt/belgrade/6999-jackrabbit-
ln.html")
time.sleep(2)
a = driver.find_element_by_xpath('//*
[@id="mainStoreHours"]/div/table/tbody/tr[1]/td[2]/span/span[1]').text
b = driver.find_element_by_xpath('//*
[@id="mainStoreHours"]/div/table/tbody/tr[1]/td[2]/span/span[3]').text
time.sleep(1)
df = pd.DataFrame({'Open Time' :a, 'Close Time' :b}, index=[9])
driver.close()
driver = webdriver.Chrome('C:/Users/Me/Documents/PY/chromedriver.exe')
driver.get("https://local.albertsons.com/mt/bozeman/200-s-23rd-ave.html")
time.sleep(2)
c = driver.find_element_by_xpath('//*
[@id="mainStoreHours"]/div/table/tbody/tr[1]/td[2]/span/span[1]').text
d = driver.find_element_by_xpath('//*
[@id="mainStoreHours"]/div/table/tbody/tr[1]/td[2]/span/span[3]').text
time.sleep(1)
df1 = pd.DataFrame({'Open Time' :c, 'Close Time' :d}, index=[6])
driver.close()
df_all = pd.concat([df, df1])
df_all.to_excel('Storehours.xlsx')
【问题讨论】:
-
无需为每个站点打开和关闭浏览器。只需重用浏览器即可使其运行得更快。如果您希望它运行得非常快,您可以编写线程化,每次运行都会打开它自己的浏览器、抓取数据并关闭,但您当前的代码不是线程化的。