当前位置: 首页 > 面试题库 >

如何使用Python脚本下载完整的网页?

邓阳嘉
2023-03-14
问题内容

目前,我有一个只能下载HTML给定页面的脚本。

现在我想 下载网页中的所有文件 ,包括HTMLCSSJS图像文件 (同我们得到任何网站的CTRL-S)。

我当前的代码是:

import urllib
url = "https://en.wikipedia.org/wiki/Python_%28programming_language%29"
urllib.urlretrieve(url, "t3.html")

我访问了许多问题,但它们都只下载HTML


问题答案:

以下实现使您能够获取HTML子网站。为了获得您需要的其他文件,可以对其进行更完善的开发。我depth为您设置了变量,以设置要解析的最大sub_websites。

import urllib2
from BeautifulSoup import *
from urlparse import urljoin


def crawl(pages, depth=None):
    indexed_url = [] # a list for the main and sub-HTML websites in the main website
    for i in range(depth):
        for page in pages:
            if page not in indexed_url:
                indexed_url.append(page)
                try:
                    c = urllib2.urlopen(page)
                except:
                    print "Could not open %s" % page
                    continue
                soup = BeautifulSoup(c.read())
                links = soup('a') #finding all the sub_links
                for link in links:
                    if 'href' in dict(link.attrs):
                        url = urljoin(page, link['href'])
                        if url.find("'") != -1:
                                continue
                        url = url.split('#')[0] 
                        if url[0:4] == 'http':
                                indexed_url.append(url)
        pages = indexed_url
    return indexed_url


pagelist=["https://en.wikipedia.org/wiki/Python_%28programming_language%29"]
urls = crawl(pagelist, depth=2)
print urls

Python3版本,2019年。这可以节省一些时间:

#!/usr/bin/env python


import urllib.request as urllib2
from bs4 import *
from urllib.parse  import urljoin


def crawl(pages, depth=None):
    indexed_url = [] # a list for the main and sub-HTML websites in the main website
    for i in range(depth):
        for page in pages:
            if page not in indexed_url:
                indexed_url.append(page)
                try:
                    c = urllib2.urlopen(page)
                except:
                    print( "Could not open %s" % page)
                    continue
                soup = BeautifulSoup(c.read())
                links = soup('a') #finding all the sub_links
                for link in links:
                    if 'href' in dict(link.attrs):
                        url = urljoin(page, link['href'])
                        if url.find("'") != -1:
                                continue
                        url = url.split('#')[0] 
                        if url[0:4] == 'http':
                                indexed_url.append(url)
        pages = indexed_url
    return indexed_url


pagelist=["https://en.wikipedia.org/wiki/Python_%28programming_language%29"]
urls = crawl(pagelist, depth=1)
print( urls )


 类似资料:
  • 我想下载一个网页的完整html,我已经写了一些代码来做到这一点。然而,当我回头看下载的html时,我发现只有大约一半的html存在。我认为这是因为网页是动态的,当你与网页交互时,会加载更多的信息。我一直在尝试使用PhantomJS与ChromeDriver Manager协调一致地执行此操作,但运气不佳。这是只下载部分html的代码(我再次相信,因为页面是动态的): 这是我对PhantomJS的尝

  • 问题内容: 我正在使用以下代码使用Python保存网页: 问题 :此代码将html保存为基本html,而不包含javascript,图像等。我想将网页保存为完整(就像我们在浏览器中有选择) 更新 :我现在正在使用以下代码保存webapge的所有js / images / css文件,以便可以将其保存为完整的网页,但是仍然像基本html一样保存了我的输出html: 问题答案: 尝试使用seleniu

  • 我需要下载一个文件,每天从网站上的日期将过去。我尝试使用以下代码- 但这是一个错误- Invoke-WebRequest:基础连接已关闭:发送时发生意外错误。在行:3字符:1调用-网络请求-Uri$url-OutFile$输出 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 分类信息:无效操作:(System.网。[Invoke-WebRequest],

  • 问题内容: 有什么方法可以使用WebDriver保存完整的网页吗? 当前,我执行getPageSource(),然后将所有内容放入html本地文件中,但是保存的页面的形状不好(奇怪的字符,没有图像,所有元素向下偏移) 请参阅以下我使用的代码: 有人可以建议我使用WebDriver在Firefox中保存完整网页的方法吗?例如自动? 问题答案: 奇怪的字符可能与写入文件的编码有关。 其他问题可能与以下

  • python如何获取完整的os版本 OS 版本: 10.0.19045 暂缺 Build 19045 用了一些办法这能获取:10.0.19045后面的暂缺 暂缺 Build 19045 获取不到 有什么办法获取完整的10.0.19045 暂缺 Build 19045

  • 问题内容: 如果尝试,它将下载已解决的页面。但是我想下载原始脚本。这可能吗? 问题答案: 不用了,谢谢你。服务器完全控制它如何响应HTTP请求。 严格来说,首先您不能确定它的另一端是否是PHP。