我正在尝试从JS生成的站点解析(623) 337-****
。我的代码是:
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 :(得分:1)
问题是某些内容是通过post page加载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-****
。
希望有所帮助。