我必须以简单的HTML格式下载www.humkinar.pk等网站的源代码。网站上的内容是动态生成的。我已经尝试了driver.page_source
selenium
的功能,但它没有完全下载页面,例如图像和javascript文件。如何下载完整页面。在python中有没有更好更简单的解决方案?
答案 0 :(得分:2)
我知道你的问题是关于硒,但根据我的经验,我告诉你,推荐使用硒来进行测试和 NOT 进行抓取。它非常 SLOW 。即使有多个无头浏览器实例(根据您的情况使用chrome),结果也会延迟太多。
Python 2,3
这个三人组会帮助你很多,为你节省很多时间。
不要使用dryscrape的解析器,它非常慢和越野车。对于 在这种情况下,可以将BeautifulSoup与
lxml
解析器一起使用。使用dryscrape来抓取Javascript生成的内容,纯HTML和图像。如果您同时抓取大量链接,我强烈推荐 使用类似ThreadPoolExecutor的东西
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)
答案 1 :(得分:0)
不允许在没有权限的情况下下载网站。如果您知道这一点,您也会知道托管服务器上有隐藏的代码,而您作为Visitior无法访问它。
答案 2 :(得分:0)
我希望下面的代码能够下载页面的完整内容。
driver.get("http://testurl.com")
pageurl=driver.current_url
page = requests.get(pageurl)
pagecontent=page.content
`pagecontent` will contain the complete code content