Javascript 通过Selenium Python下载整个网页(html、图像、JS)
我必须以简单的HTML格式下载像www.humkinar.pk这样的网站的源代码。网站上的内容是动态生成的。我已经尝试了Javascript 通过Selenium Python下载整个网页(html、图像、JS),javascript,python,html,selenium,web-scraping,Javascript,Python,Html,Selenium,Web Scraping,我必须以简单的HTML格式下载像www.humkinar.pk这样的网站的源代码。网站上的内容是动态生成的。我已经尝试了驱动程序。page_source函数的selenium,但是它没有完全下载页面,比如留下图像和javascript文件。如何下载完整的页面。有没有更好、更简单的python解决方案?未经许可,不允许下载网站。如果您知道这一点,您也会知道托管服务器上有隐藏的代码,您作为Visitio无法访问该服务器。我希望下面的代码可以用来下载页面的完整内容 driver.get("http:/
驱动程序。page_source
函数的selenium
,但是它没有完全下载页面,比如留下图像和javascript文件。如何下载完整的页面。有没有更好、更简单的python解决方案?未经许可,不允许下载网站。如果您知道这一点,您也会知道托管服务器上有隐藏的代码,您作为Visitio无法访问该服务器。我希望下面的代码可以用来下载页面的完整内容
driver.get("http://testurl.com")
pageurl=driver.current_url
page = requests.get(pageurl)
pagecontent=page.content
`pagecontent` will contain the complete code content
使用硒
我知道你的问题是关于硒的,但根据我的经验,我要告诉你,硒被推荐用于测试,而不刮伤。它非常慢。即使有多个无头浏览器实例(根据您的情况使用chrome),其结果也是延迟太多
推荐
Python 2,3
这三人组将帮助你很多,节省你很多时间
lxml
解析器一起使用。使用DrySrape来刮除Javascript生成的内容、纯HTML和图像
如果你同时抓取了很多链接,我强烈推荐
使用类似ThreadPoolExecutor的东西
编辑#1
干刮+美化组用法(Python 3+)
若我有权访问托管服务器,那个么有可能吗?你们使用什么webdriver?什么浏览器?我用的是Chrome浏览器
from dryscrape import start_xvfb
from dryscrape.session import Session
from dryscrape.mixins import WaitTimeoutError
from bs4 import BeautifulSoup
def new_session():
session = Session()
session.set_attribute('auto_load_images', False)
session.set_header('User-Agent', 'SomeUserAgent')
return session
def session_reset(session):
return session.reset()
def session_visit(session, url, check):
session.visit(url)
# ensure that the market table is visible first
if check:
try:
session.wait_for(lambda: session.at_css(
'SOME#CSS.SELECTOR.HERE'))
except WaitTimeoutError:
pass
body = session.body()
session_reset(session)
return body
# start xvfb in case no X is running (server)
start_xvfb()
SESSION = new_session()
URL = 'https://stackoverflow.com/questions/45796411/download-entire-webpage-html-image-js-by-selenium-python/45824047#45824047'
CHECK = False
BODY = session_visit(SESSION, URL, CHECK)
soup = BeautifulSoup(BODY, 'lxml')
RESULT = soup.find('div', {'id': 'answer-45824047'})
print(RESULT)