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

2024-09-27 07:33:33 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我不希望在解析后处理结果;相反,我想让它们飞起来。正则表达式在这里是一个好的选择吗?谢谢


Tags: nameinfo脚本com列表driverseleniumlink
1条回答
网友
1楼 · 发布于 2024-09-27 07:33:33

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

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]

得到

['Cheryl Hughley', '661-421-5861']

相关问题 更多 >

    热门问题