Python 从JS生成的站点进行解析
我试图从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
(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谢谢,刚刚意识到天真看起来并不干净和漂亮。