硒脚本的输出是空白的,我该如何修复



第一次使用selenium对网站进行web抓取,我对python相当陌生。我曾试图在一个瑞典住房网站上搜索,以提取价格、地址、面积、大小等,为每个特定URL的列表,该URL显示在一个名为"的特定区域内出售的所有房屋;Lidingö;。

我设法绕过了接受cookie的弹出窗口。

但是,当脚本运行时,我从终端得到的输出是空白的。我什么也没得到,没有一个错误,没有任何输出。

可能出了什么问题?

代码为:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
s = Service("/Users/brustabl1/hemnet/chromedriver")
url = "https://www.hemnet.se/bostader?location_ids%5B%5D=17846&item_types%5B%5D=villa"
driver = webdriver.Chrome(service=s)
driver.maximize_window()
driver.implicitly_wait(10)
driver.get(url)

# The cookie button clicker
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[62]/div/div/div/div/div/div[2]/div[2]/div[2]/button"))).click()

lists = driver.find_elements(By.XPATH, '//*[@id="result"]/ul[1]/li[1]/a/div[2]')
for list in lists:
adress = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[2]/a/div[2]/div/div[1]/div[1]/h2')
area = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[1]/div[1]/div/span[2]')
price = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[1]')
rooms = list.find_element(By.XPATH,'//*
[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[3]')
size = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[2]')
print(adress.text)

您的代码中有很多缺陷。。。

for list in lists:
adress = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[2]/a/div[2]/div/div[1]/div[1]/h2')
area = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[1]/div[1]/div/span[2]')
price = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[1]')
rooms = list.find_element(By.XPATH,'//*
[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[3]')
size = list.find_element(By.XPATH,'//*[@id="result"]/ul[1]/li[1]/a/div[2]/div/div[2]/div[1]/div[2]')
print(adress.text)

在您的代码中,它返回变量lists中的元素列表

PD_4不是将每个地址的值存储在列表中,而是通过每次迭代更新其值。xpath指的是确切的元素,您的循环一遍又一遍地选择同一个元素!

通过硒刮取文本是一种不好的做法,请使用BeautifulSoup。

最新更新