通过Selenium Python下载整个网页(html,图像,JS)

时间:2017-08-21 11:50:57

标签: javascript python html selenium web-scraping

我必须以简单的HTML格式下载www.humkinar.pk等网站的源代码。网站上的内容是动态生成的。我已经尝试了driver.page_source selenium的功能,但它没有完全下载页面,例如图像和javascript文件。如何下载完整页面。在python中有没有更好更简单的解决方案?

3 个答案:

答案 0 :(得分:2)

使用Selenium

我知道你的问题是关于硒,但根据我的经验,我告诉你,推荐使用硒来进行测试 NOT 进行抓取。它非常 SLOW 。即使有多个无头浏览器实例(根据您的情况使用chrome),结果也会延迟太多。

建议

  

Python 2,3

这个三人组会帮助你很多,为你节省很多时间。

  

不要使用dryscrape的解析器,它非常慢和越野车。对于   在这种情况下,可以将BeautifulSoup与lxml解析器一起使用。使用dryscrape来抓取Javascript生成的内容,纯HTML和图像。

     

如果您同时抓取大量链接,我强烈推荐   使用类似ThreadPoolExecutor的东西

编辑#1

dryscrape + BeautifulSoup用法( Python 3 +

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