【问题标题】:How to use Selenium to get the housing data如何使用 Selenium 获取房屋数据
【发布时间】:2016-05-27 05:03:15
【问题描述】:

我正在尝试从网页http://www.har.com/4311-Childress-St/sale_40763013 获取数据。它有房屋地址,价格和其他信息。我正在尝试获取所有数据,但仅成功检索了地址、城市和邮政编码。下面是我的代码。如何获取其他信息,例如县、故事等?

def getHarData(driver):
driver.get("http://www.har.com/4311-Childress-St/sale_40763013")
try:
    address = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "heading_22")))
    cityzip = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "sub_heading")))
    #price = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "heading_22 pb15"))) 
    print (address.text + ", " + cityzip.text+ ", " +price.text)
except TimeoutException:
    print("data not found")

【问题讨论】:

    标签: python selenium web web-scraping screen-scraping


    【解决方案1】:

    如果您只需要某些特定字段,我会制作一个很好的可重用函数来通过字段名称/标签获取字段值:

    def get_field_value(driver, field):
        field = field.capitalize() + ":"
        return driver.find_element_by_xpath("//div[@class = 'dc_label' and . = '%s']/following-sibling::div[@class = 'dc_value']" % field).text
    

    用法:

    county = get_field_value(driver, "county")
    print(county)  # prints "Harris County"
    

    完整的工作示例:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.ui import WebDriverWait
    
    
    def get_field_value(driver, field):
        field = field.capitalize() + ":"
        return driver.find_element_by_xpath("//div[@class = 'dc_label' and . = '%s']/following-sibling::div[@class = 'dc_value']" % field).text
    
    driver = webdriver.Firefox()
    driver.get("http://www.har.com/4311-Childress-St/sale_40763013")
    
    # wait for the page to load
    wait = WebDriverWait(driver, 10)
    wait.until(EC.presence_of_element_located((By.CLASS_NAME, "dc_title")))
    
    county = get_field_value(driver, "county")
    print(county)
    

    【讨论】:

    • 你太棒了!它像魔术一样工作。你能给我介绍一个很好的xpath教程吗?我只是不知道如何编写像你这样好的/复杂的 xpath。
    • @teapot 网上有很多可用的信息,但我只想说,练习、练习、练习! :)
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2017-02-22
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多