【问题标题】:How can I download full html from JavaScript webpage?如何从 JavaScript 网页下载完整的 html?
【发布时间】:2020-11-22 04:10:26
【问题描述】:

我想下载网页的完整 html,为此我编写了一些代码。但是,当我回去查看下载的 html 时,我发现那里只有大约一半的 html。我认为这是因为网页是动态的,并且在您与页面交互时会加载更多信息。我一直在尝试使用 PhantomJS 与 ChromeDriver Manager 一起执行此操作,但没有运气。这是只下载部分html的代码(我再次相信,因为页面是动态的):

from bs4 import BeautifulSoup
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import os
import re
import time

driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
driver.get(''https://medium.com/@benjaminhardy')
time.sleep(25)
html = driver.page_source
driver.close()

这是我对 PhantomJS 的尝试,但没有运气:

driver = webdriver.Chrome(ChromeDriverManager().install().PhantomJS())
driver.get('https://medium.com/@benjaminhardy')
html = driver.page_source
time.sleep(25)
driver.close()

error:'str' object has no attribute 'PhantomJS'

【问题讨论】:

  • “不走运”是指 PhantomJS 驱动程序没有明显区别?
  • 是的@Daveldito,我的印象是 PhantomJS 会在下载之前呈现完整的 html,但我不熟悉它。
  • 遗憾的是,我从未使用过 PhantonJS,但这可能会对您有所帮助:stackoverflow.com/questions/28928068/… 我在您的代码中没有看到您实际滚动和加载到页面末尾的任何地方(正如我说,我自己也不知道怎么处理 Phantomjs)

标签: python html selenium-webdriver phantomjs href


【解决方案1】:

您可以只使用请求库。例如:

import requests

page = requests.get('https://medium.com/@benjaminhardy')

print(page.content)

这样做的额外好处是请求已与 python 预先捆绑,因此您无需下载任何额外内容。

如果您使用 BeautifulSoup,只需使用:

soup = BeautifulSoup(page.content)

【讨论】:

  • 网页是动态的,使用js加载内容
猜你喜欢
  • 1970-01-01
  • 2013-05-12
  • 1970-01-01
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 2016-05-23
相关资源
最近更新 更多