尝试下载文件时出现HTTP错误400 urllib2

Ctrl 4

这是事情,我正在执行一个脚本,该脚本从不同的站点下载文件。问题是我不知道为什么会引发此错误,而如果我在浏览器中输入相同的URL,则可以下载文件。另外,还有其他可以正常工作的网址。所以...这是代码:

import os
from bs4 import BeautifulSoup
import time
import urllib2

f = urllib2.Request(url)
f.add_header('User-Agent', 'Mozilla/5.0 Windows NT 6.3; WOW64; rv:34.0')
request = urllib2.urlopen(f)
data = request.read()
soup = BeautifulSoup(data, 'html.parser')
p_name = soup.find('h2', id="searchResults").contents[0]
if not os.path.exists(p_name):
  os.makedirs(p_name)
for a in soup.find_all('a', href="#register"):
    f = a["data-durl"]
#Following two lines just prepares file name
    n = len(f.split("/"))
    n_file = f.split("/")[n-1]
    path_file = p_name+"\\"+n_file
    if os.path.isfile(path_file):
        print "Firmware already downloaded. skipping it"
    else:
        print "Downloading "+ path_file
        link = urllib2.urlopen(f)
        datos = link.read()
#print "[+] Downloading firmware %s" % n_file
#n_archivo = "Archivo"+str(b)+".zip"
        with open(path_file, "wb") as code:
           code.write(datos)
    time.sleep(2) 

这个网址将无法与此脚本一起使用:无法正常工作的网址,但是这个网址可以正常工作

希望您能够帮助我。

编辑:我添加了我为此使用的库。和堆栈跟踪,我发现了错误!问题是它尝试下载的文件名上有空格。使用f.replace(“”,“%20”)应该可以正常工作:)

热心

您需要将文件名中的空格转换为空格的URL编码:%20为此,您可以使用以下命令在这两行之间添加一行str.replace()

print "Downloading "+ path_file
f = f.replace(' ', '%20')
link = urllib2.urlopen(f)

这将从URL下载:

http://www.downloads.netgear.com/files/GDC/ME101/ME101%20Software%20Utility%20Version%202.0.zip

而不是来自

http://www.downloads.netgear.com/files/GDC/ME101/ME101 Software Utility Version 2.0.zip

这是无效的,因为其中包含空格。

该URL在您的浏览器中仍然有效,因为当您输入带空格的URL时,浏览器会自动将其转换为%20

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Urllib2 HTTP 404

来自分类Dev

使用urllib2和/或wget自动下载文件

来自分类Dev

Python Urllib2 SSL错误

来自分类Dev

Python urllib2请求错误

来自分类Dev

urllib2错误403:禁止

来自分类Dev

Urllib2和JSON对象错误

来自分类Dev

使用urllib2的Python追溯错误

来自分类Dev

无法使用urllib2下载整个文件

来自分类Dev

带有urllib2的POST数据给出了400

来自分类Dev

使用urllib2下载zipfile失败

来自分类Dev

URLlib2导致程序在尝试20次后停止

来自分类常见问题

导入错误:没有模块名称urllib2

来自分类Dev

urllib2错误“在加速器上找不到”

来自分类Dev

Python:urllib2放置请求返回301错误

来自分类Dev

urllib2中未知的URL类型错误

来自分类Dev

urllib2中未知的url类型错误

来自分类Dev

Python:urllib2错误“名称或服务器未知”

来自分类Dev

Python无法导入urllib2(产生错误)

来自分类Dev

使用urllib2时,获取HTTPError 404

来自分类Dev

使用python urllib2返回url文件流

来自分类Dev

urllib2 - 计算 .csv 文件中的行数 - python

来自分类Dev

发出http POST请求以使用Python urllib / urllib2上传文件

来自分类Dev

使用Python urllib2下载时忽略丢失的文件

来自分类Dev

在VPS上运行Selenium Webdriver时出现各种Urllib2错误

来自分类Dev

Exception Value: HTTP Error 400: Bad Request after a Python/urllib2 request to PayPal Sandbox Site

来自分类Dev

使用urllib2(python 2.7)进行爬网时出现混乱的代码

来自分类Dev

使用urllib2(python 2.7)进行爬网时出现混乱的代码

来自分类Dev

异常值:HTTP错误400:对PayPal沙盒网站的Python / urllib2请求后,错误请求

来自分类Dev

使用urllib vs urllib2 vs请求vs http.client时应考虑哪些因素

Related 相关文章

热门标签

归档