我试图让自己更轻松地搜索临时公寓,但包含这些公寓列表的网站要求我从下拉列表中选择一个建议,然后才能单击“提交”。无论搜索框中的条目有多完整。
这里的最终希望是我可以转到搜索结果,然后从每个列表中提取联系信息。我能够使用 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 代码,因为这会忽略这些建议。这真是令人沮丧。
这是一个屏幕截图:
所以我盲目地尝试选择一些东西。
这里的错误是:
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