例如,我正在尝试抓取 PubChem 上的文章,例如这篇文章。PubChem 要求浏览器启用 Javascript,否则它会重定向到几乎没有内容显示“此应用程序需要 Javascript。请打开 Javascript 以使用此应用程序”的页面。为了解决这个问题,我使用 Selenium 库中的 Chrome Web 驱动程序来获取 PubChem 使用 JavaScript 生成的 HTML。
它大约有一半的时间这样做。它还经常不呈现完整的 html,并重定向到 Javascript 警告页面。如何使脚本始终如一地检索网站的 JS 版本?
我也尝试通过使用 PhantomJS 来解决这个问题,除了 PhantomJS 在安装后不知何故无法在我的机器上运行。
from bs4 import BeautifulSoup
from requests import get
from requests_html import HTMLSession
from selenium import webdriver
import html5lib
session = HTMLSession()
browser = webdriver.Chrome('/Users/user/Documents/chromedriver')
url = "https://pubchem.ncbi.nlm.nih.gov/compound/"
browser.get(url)
innerHTML = browser.execute_script("return document.body.innerHTML")
soup = BeautifulSoup(innerHTML, "html5lib")
没有任何错误消息。唯一的问题是,有时网络爬虫无法按预期获取 JS 渲染的网页。太感谢了!