如何使用 selenium 选择搜索建议?该网站阻止我点击提交,需要进行选择

2023-12-02

我试图让自己更轻松地搜索临时公寓,但包含这些公寓列表的网站要求我从下拉列表中选择一个建议,然后才能单击“提交”。无论搜索框中的条目有多完整。

这里的最终希望是我可以转到搜索结果,然后从每个列表中提取联系信息。我能够使用 Beautiful soup 和 Requests 从列表中提取所需的数据,但我必须将该特定列表的 URL 粘贴到我的代码中。我还没做到那么远。如果有人对如何绕过登陆页面以访问相关列表有任何建议,请告诉我。

我尝试在成功搜索后查看其书写方式,将城镇名称和州名称拼接到地址栏中,但这不起作用。

该网站是我的蒙特齐默.

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select


driver = webdriver.Firefox()


webpage = r"https://mein-monteurzimmer.de"
print('Prosim vnesi zeljeno mesto') #Please enter the town to search
searchterm = input()

driver.get(webpage)

sbox = driver.find_element_by_xpath("/html/body/main/cpagearea/section/div[2]/div/section[1]/div/div[1]/section/form/div/input")
sbox.send_keys(searchterm)

ddown = driver.find_element_by_xpath("/html/body/main/cpagearea/section/div[2]/div/section[1]/div/div[1]/section/form/div")
ddown.select_by_value(1)

webdriver.wait(2)

#select = driver.find_element_by_xpath("/html/body/main/cpagearea/section/div[2]/div/section[1]/div/div[1]/section/form/div")

submit = driver.find_element_by_xpath("/html/body/main/cpagearea/section/div[2]/div/section[1]/div/div[1]/section/form/button")
submit.click

当我检查搜索框时,在输入文本之前我找不到与建议相关的任何内容。然后我无法单击 HTML 代码,因为这会忽略这些建议。这真是令人沮丧。

这是一个屏幕截图:

Inspecting suggestions

所以我盲目地尝试选择一些东西。

这里的错误是:

AttributeError:“FirefoxWebElement”对象没有属性“select_by_value”

我用 select 尝试了一些东西,但这与我尝试的方式不起作用。

我很困惑,我能找到的解决方案是特定于其他网站(如谷歌或亚马逊)的,如果它的话我无法理解。

有谁知道我怎样才能做到这一点?

这是从列表中获取信息的代码,我必须对其进行扩展才能获取其他数据:

import bs4, requests

def getMonteurAddress(MonteurUrl):
    res = requests.get(MonteurUrl)
    res.raise_for_status()

    soup = bs4.BeautifulSoup(res.text, 'html.parser')
    elems = soup.select('section.c:nth-child(4) > div:nth-child(2) > div:nth-child(2) > dl:nth-child(1) > dd:nth-child(2)')
    return elems[0].text.strip()




address = getMonteurAddress('https://mein-monteurzimmer.de/105742/monteurzimmer/deggendorf-monteurzimmer-deggendorf-pensionfelix%40googlemailcom')
print('Naslov je ' + address) #print call to see if it gets the right data

正如您在输入后所看到的,有一个正在创建的 div 列表。现在您需要获取这些 div 的有效定位器。要获取这些创建的 div 的定位器,您需要在调试暂停模式下检查元素(F12--> 源选项卡--> F8)。

尝试下面的代码来选择您键入的第一个匹配的地址。

sbox = driver.find_element_by_xpath("//input[@placeholder='Adresse, PLZ oder Ort eingeben']")
sbox.send_keys(searchterm)
addessXpath = "//div[contains(text(),'"+searchterm+"')]"
driver.find_element_by_xpath(addessXpath).click()

注意:如果有多个匹配地址,则将选择第一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 selenium 选择搜索建议?该网站阻止我点击提交,需要进行选择 的相关文章

随机推荐