如何使用urllib2.urlopen上默认用户代理以外的用户代理下载网页?
我正在使用urllib模块中的urlretrieve.
我似乎无法找到如何在我的请求中添加User-Agent描述.
urlretrieve有可能吗?或者我需要使用其他方法吗?
我想使用python模块"urllib.request"从网址下载图像文件,该模块适用于某些网站(例如mangastream.com),但不适用于另一个(mangadoom.co)接收错误"HTTP错误403:禁止" .后一种情况可能会出现什么问题以及如何解决?
我在OSX上使用python3.4.
import urllib.request
# does not work
img_url = 'http://mangadoom.co/wp-content/manga/5170/886/005.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
Run Code Online (Sandbox Code Playgroud)
在错误消息的末尾,它说:
...
HTTPError: HTTP Error 403: Forbidden
Run Code Online (Sandbox Code Playgroud)
但是,它适用于其他网站
# work
img_url = 'http://img.mangastream.com/cdn/manga/51/3140/006.png'
img_filename = 'my_img.png'
urllib.request.urlretrieve(img_url, img_filename)
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下帖子中的解决方案,但它们都不适用于mangadoom.co.
这里的解决方案也不合适,因为我的情况是下载图像. urllib2.HTTPError:HTTP错误403:禁止
非python解决方案也是受欢迎的.您的建议将非常感谢.
我正在写一个小的Python脚本来通过谷歌图像抓取图像.我已经设法把事情搞定到了我想要的图像的网址在一个方便的列表中.现在,我只需抓住它们......
对于每个图像网址,我这样做:
print("Retrieving:{0}".format(sFinalImageURL))
sExt = sFinalImageURL.split('.')[-1]
#u = urllib.request.urlopen(sFinalImageURL)
try:
u = urllib.request.urlopen(sFinalImageURL)
except:
print("error: cannot retrieve image")
continue
raw_data = u.read()
print("read {0} bytes".format(len(raw_data)))
u.close()
global sImagesFolder
try:
f = open("{0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt),'wb')
f.write(raw_data)
f.close()
except:
print("couldn't write to {0}/{1}_{2}.{3}".format(sImagesFolder,sImage,i,sExt))
print()
Run Code Online (Sandbox Code Playgroud)
以下是我遇到的问题:
尽管我可以在浏览器中直接打开URL,但尝试打开一些URL会给我403.所以在HTTP请求标题中有一些图像服务器不喜欢的东西......任何想法?
这是一些输出:
Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Timba%2B1.jpg/220px-Timba%2B1.jpg
error: cannot retrieve image
Retrieving:http://upload.wikimedia.org/wikipedia/commons/thumb/2/26/YellowLabradorLooking_new.jpg/260px-YellowLabradorLooking_new.jpg
error: cannot retrieve image
Retrieving:http://1.bp.blogspot.com/-7SsJ1n3RdoA/Tf07NOgD5nI/AAAAAAAAABo/tl8qLLIU01Y/s1600/english-shepherd-dog-0003.jpg
read 11123 bytes
Retrieving:http://completedogfood.net/wp-content/uploads/2010/07/complete-dog-food.bmp
read 419630 bytes
Run Code Online (Sandbox Code Playgroud)