Python 从JS生成的站点进行解析

Python 从JS生成的站点进行解析,python,selenium-webdriver,web-scraping,Python,Selenium Webdriver,Web Scraping,我试图从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

我试图从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)
出于某种原因,它什么也不打印。谢谢你的帮助


旁注:在python中有没有更快的方法呢?问题是有些内容是通过post page load ajax请求动态加载的

您应该等待元素变为可见()-然后获取页面的源代码:

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.implicit\u wait()
,尽管听起来不太正确

打印
(623)337-***


希望这能有所帮助。

检查内容中的内容。正则表达式应该是正确的。+1表示等待选项,而不是天真的(尽管是功能性的)睡眠:)@JonClements谢谢,刚刚意识到天真看起来并不干净和漂亮。