2014-01-17 45 views
1

我想从JS生成的网站解析(623) 337-****。我的代码是:从JS生成的网站解析

from selenium import webdriver 
import re 
browser = webdriver.Firefox() 
browser.get('http://www.spokeo.com/search?q=Joe+Henderson,+Phoenix,+AZ&sao7=t104#:18643819031') 
content = browser.page_source 
browser.quit() 
m_obj = re.search(r"(\(\d{3}\)\s\d{3}-\*{4})", content) 
if m_obj:  
    print m_obj.group(0) 

出于某种原因,不`吨打印任何东西。任何帮助apreciated

旁注:有没有做到这一点在Python

+0

检查'content'里面的内容。正则表达式应该是正确的。 – Martol1ni

回答

1

更快的方法的问题是,一些内容被通过后页面加载Ajax请求动态加载。

你应该等到元素变得可见(documentation) - 然后获取页面的源代码:

import re 

from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
from selenium import webdriver 
from selenium.webdriver.support.wait import WebDriverWait 


browser = webdriver.Firefox() 
browser.get('http://www.spokeo.com/search?q=Joe+Henderson,+Phoenix,+AZ&sao7=t104#:18643819031') 

WebDriverWait(browser, 10).until(EC.presence_of_element_located((By.ID, "profile_details_section_header"))) 
content = browser.page_source 

m_obj = re.search(r"(\(\d{3}\)\s\d{3}-\*{4})", content) 
if m_obj:  
    print m_obj.group(0) 

browser.quit() 

或者你可以拨打time.sleep()browser.implicitly_wait()代替 - 尽管这听起来并不完全正确。

打印(623) 337-****

希望有所帮助。

+0

+1等待选项,而不是天真(尽管它功能)睡觉:) –

+0

@JonClements谢谢,只是意识到,天真看起来不干净,不错。 – alecxe