无法解析网页中的某些字段

时间:2018-07-11 07:55:22

标签: python python-3.x selenium web-scraping

我已经用python用selenium编写了一个脚本,以从网页中获取Director名称和Phone号。当我执行脚本时,得到的结果如下所示:

['Director: Cheryl Hughley\nPhone: 661-421-5861\nEmail: Cheryl_hughley@yahoo.com']

如何仅动态解析该站点中 的名称和电话号码,例如:

name: Cheryl Hughley
phone : 661-421-5861

这是我试图在上面的列表(第一个示例)中产生结果的方法:

from selenium import webdriver

link ="https://www.nafe.com/bakersfield-nafe-network"

def search_info(driver,url):
    driver.get(url)
    info = [item.text.strip() for item in driver.find_elements_by_css_selector(".markdown p") if "Phone" in item.text]

    print(f'{info}')

if __name__ == '__main__':
    driver = webdriver.Chrome()
    try:
        search_info(driver,link)
    finally:
        driver.quit()

我不希望在解析结果后对其进行处理;相反,我希望让他们即时获得。正则表达式在这里会是一个不错的选择吗?谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试以下解决方案:

Unity 2018.1.1f1

获取输出

info = [driver.execute_script("return arguments[0].childNodes[arguments[1]].textContent;", item, index).strip() for index in [0, 2] for item in driver.find_elements_by_css_selector(".markdown p") if "Phone" in item.text]

['Director: Cheryl Hughley', 'Phone:  661-421-5861']

获取

info = [driver.execute_script("return arguments[0].childNodes[arguments[1]].textContent;", item, index).split(": ")[-1].strip() for index in [0, 2] for item in driver.find_elements_by_css_selector(".markdown p") if "Phone" in item.text]