当前位置: 首页 > 知识库问答 >
问题:

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

麻阳
2023-03-14

我试图让自己搜索临时公寓变得容易一些,但是一个包含这些公寓列表的网站要求我在点击提交之前从他们的下拉列表中选择一个建议。无论搜索框中的条目多么完整。

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

我试着将城镇名称和州名称拼接到地址栏中,通过查看成功搜索后的书写方式,但没有成功。

该网站是Mein Monteurzimmer。

这是我的代码:

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代码了,因为这否定了这些建议。这很令人沮丧。

以下是一个屏幕截图:

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

这里的错误是:

对象没有属性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

共有1个答案

贲凌
2023-03-14

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

请尝试使用下面的代码,在键入时选择第一个匹配的地址。

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()

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

 类似资料:
  • 有人能帮我选择自动建议吗?

  • 问题内容: 我正在处理Web应用程序中的dblclick事件。副作用是双击可以选择页面上的文本。如何防止这种选择发生? 问题答案: 您还可以将这些样式应用于所有非IE浏览器和IE10的跨度:

  • 我正在尝试使用selenium和Python单击这个单选按钮。 我有 但它不允许我点击它。我如何使用名称、值或类、值等的组合来点击? 关于如何使用硒,是否有一个很好的信息来源?因为我所发现的大部分是在java上使用的,而我使用的是Python。 编辑:使用XPATH

  • 我是硒的新手,当我想点击带有下一个html代码的按钮时,我得到了库存: 这就是我尝试的: 得到了这个: 同样的错误。也尝试了这个(因为图像中的信息) 同样的错误。也试试这个: 得到这个: 谢谢你的帮助!!!

  • 问题内容: 我正在使用Java创建selenium测试用例。我的系统基于相互连接的Portlet。我正在使用“ selectFrame”命令来选择portlet。 我尝试了很多事情,但似乎无法正常工作: 谁能帮我? 问题答案: 您有一个XPath表达式,该表达式应该可以为您提供所需的IFrame元素。但是,您没有告诉Selenium这是XPath表达式。以下是您需要的: 请注意,我的Java不是最