我试图建立一个网站刮板为红鳍拉红鳍估计。我有一个函数可以做到这一点,有时它工作,有时它不工作。我注意到它不起作用的原因是submit函数。有时chrome页面不会按search(提交)按钮并转到属性页。你知道吗
我不知道如何解决这个问题,使它更加一致。你知道吗
这是我的密码:
from selenium import webdriver
from selenium.webdriver.remote import webelement
import pandas as pd
import time
from bs4 import BeautifulSoup
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://www.redfin.com/')
time.sleep(3)
def get_redfin_estimate(address):
search_box = driver.find_element_by_name('searchInputBox')
search_box.send_keys(address)
search_box.submit()
time.sleep(3)
soup = BeautifulSoup(driver.page_source, 'html.parser')
try:
price1 = soup.find('div', {'class', 'avm'}).div.text
return(price1)
except AttributeError:
try:
time.sleep(10)
price2 = soup.find('span',class_='avmLabel').find_next('span', class_='value').text
return(price2)
except:
return('N/A')
print(get_redfin_estimate('687 Catalina Laguna Beach, CA 92651'))
print(get_redfin_estimate('693 Bluebird Canyon Drive, Laguna Beach, CA 92651'))
driver.quit()
原因提交按钮工作不一致,因为所需的元素是启用了JavaScript的元素,并且您使用的定位器策略没有将带有占位符的搜索框唯一地标识为城市、地址、学校、代理、邮政编码并标识3个元素。你知道吗
要将字符序列发送到所需字段,必须为
element_to_be_clickable()
导入WebDriverWait,并且可以使用以下Locator Strategies之一:使用
CSS_SELECTOR
:使用
XPATH
:注意:必须添加以下导入:
在该元素上使用
.submit()
可能有问题。另一种方法是点击放大镜开始搜索。你知道吗相关问题 更多 >
编程相关推荐