在 Python 中使用 urllib2.urlopen(request) 等静态方法时,从网页抓取动态内容可能会带来挑战。此类内容通常由嵌入页面中的 JavaScript 生成和执行。
解决此问题的一种方法是利用 Selenium 框架和 Phantom JS 作为 Web 驱动程序。确保 Phantom JS 已安装,并且其二进制文件在当前路径中可用。
这里有一个示例来说明:
import requests from bs4 import BeautifulSoup response = requests.get(my_url) soup = BeautifulSoup(response.text) soup.find(id="intro-text") # Result: <p>
此代码将在没有 JavaScript 支持的情况下检索页面。要使用 JS 支持进行抓取,请使用 Selenium:
from selenium import webdriver driver = webdriver.PhantomJS() driver.get(my_url) p_element = driver.find_element_by_id(id_='intro-text') print(p_element.text) # Result: 'Yay! Supports javascript'
或者,您可以使用专门为抓取 JavaScript 驱动的网站而设计的 Python 库,例如 dryscrape:
import dryscrape from bs4 import BeautifulSoup session = dryscrape.Session() session.visit(my_url) response = session.body() soup = BeautifulSoup(response) soup.find(id="intro-text") # Result: <p>
以上是如何在 Python 中抓取动态 JavaScript 渲染内容?的详细内容。更多信息请关注PHP中文网其他相关文章!