感谢这里漂亮的人的帮助,所以我能够整理一些代码来抓取网页。由于页面的动态特性,我不得不使用 Selenium,因为 BeautifulSoup 只能在您必须抓取静态页面时单独使用。
一个缺点是打开页面的整个过程,等待弹出窗口打开并引入输入需要大量时间。时间在这里是个问题,因为我必须刮掉大约 1000 页(每个邮政编码 1 页),这需要大约 10 个小时。
我怎样才能优化代码,使这个操作不会花这么长时间?
我将在下面留下完整的代码和邮政编码列表以供复制。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
import time
import pandas as pd
time_of_day=[]
price=[]
Hours=[]
day=[]
disabled=[]
location=[]
danishzip = pd.read_excel (r'D:\Danish_ZIPs.xlsx')
for i in range(len(danishzip)):
try:
zipcode = danishzip['Zip'][i]
driver = webdriver.Chrome(executable_path = r'C:\Users\user\lib\chromedriver_77.0.3865.40.exe')
wait = WebDriverWait(driver,10)
driver.maximize_window()
driver.get("https://www.nemlig.com/")
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".timeslot-prompt.initial-animation-done")))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='tel'][class^='pro']"))).send_keys(str(zipcode))
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".btn.prompt__button"))).click()
time.sleep(3)
soup=BeautifulSoup(driver.page_source,'html.parser')
邮政编码列表:https ://en.wikipedia.org/wiki/List_of_postal_codes_in_Denmark
心有法竹
梦里花落0921
Qyouu
随时随地看视频慕课网APP
相关分类