【发布时间】:2013-01-09 21:23:58
【问题描述】:
我正在尝试使用 BS 和 Selenium 抓取启用 JavaScript 的页面。
到目前为止,我有以下代码。它仍然无法以某种方式检测到 JavaScript(并返回空值)。在这种情况下,我试图在底部刮掉 Facebook cmets。 (检查元素将类显示为 postText)
感谢您的帮助!
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import BeautifulSoup
browser = webdriver.Firefox()
browser.get('http://techcrunch.com/2012/05/15/facebook-lightbox/')
html_source = browser.page_source
browser.quit()
soup = BeautifulSoup.BeautifulSoup(html_source)
comments = soup("div", {"class":"postText"})
print comments
【问题讨论】:
-
您可能想尝试在页面上设置等待 - 您可能会在页面有时间完全加载之前退出(请记住,这就像浏览器并经历延迟)。在你的情况下,你可以通过等待一段时间来解决它,但更优雅的解决方案可以在seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits
-
我不太确定等待是否是问题所在,因为我删除了 browser.quit() 并运行了程序。没有运气。
-
问题实际上是之前的那一行——它在加载任何源之前加载
page_source:)
标签: python selenium screen-scraping beautifulsoup