我已经用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()
我不希望在解析结果后对其进行处理;相反,我希望让他们即时获得。正则表达式在这里会是一个不错的选择吗?谢谢。
答案 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]