如果错误代码为 404,如何在 wget 中获取准确的页面内容

Mou*_*jan 1 curl wget web-scraping python-3.x

我有两个 url 一个是工作 url 另一个是页面删除的 url.working url 很好但是对于页面删除的 url 而不是获取确切的页面内容 wget 接收 404

工作网址

import os
def curl(url):
    data = os.popen('wget -qO- %s '% url).read()
    print (url)
    print (len(data))
    #print (data)

curl("https://www.reverbnation.com/artist_41/bio")
Run Code Online (Sandbox Code Playgroud)

输出:

https://www.reverbnation.com/artist_41/bio
80067
Run Code Online (Sandbox Code Playgroud)

页面删除网址

import os
def curl(url):
    data = os.popen('wget -qO- %s '% url).read()
    print (url)
    print (len(data))
    #print (data)

curl("https://www.reverbnation.com/artist_42/bio")
Run Code Online (Sandbox Code Playgroud)

输出:

https://www.reverbnation.com/artist_42/bio
0
Run Code Online (Sandbox Code Playgroud)

我得到的长度为 0 但实时页面中有一些内容

如何在 wget 或 curl 中接收确切的内容

小智 5

wget 有一个名为“--content-on-error”的开关:

--content-on-error
           If this is set to on, wget will not skip the content when the server responds with a http status code that indicates error.
Run Code Online (Sandbox Code Playgroud)

因此,只需将其添加到您的代码中,您也将拥有 404 页面的“内容”:

import os
def curl(url):
    data = os.popen('wget --content-on-error -qO- %s '% url).read()
    print (url)
    print (len(data))
    #print (data)

curl("https://www.reverbnation.com/artist_42/bio")
Run Code Online (Sandbox Code Playgroud)