如何在 Python 中抓取 JavaScript 生成的动态内容
在 Python 中使用 urllib2.urlopen(request) 等静态方法时,从网页抓取动态内容可能会带来挑战。此类内容通常由嵌入页面中的 JavaScript 生成和执行。
解决此问题的一种方法是利用 Selenium 框架和 Phantom JS 作为 Web 驱动程序。确保 Phantom JS 已安装,并且其二进制文件在当前路径中可用。
这里有一个示例来说明:
1 2 3 4 5 | 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:
1 2 3 4 5 | 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:
1 2 3 4 5 6 7 | 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中文网其他相关文章!