Python webscraping:使用urllib

时间:2017-01-27 08:25:18

标签: python beautifulsoup

我正在尝试使用Python和BeautifulSoup检索图像。我设法获得了图像的完整网址,但是当我使用urllib.urlretrieve(imagelink, filename)时,它会检索图像,但图像不完整,只有3.2kb。

真实的图像(我得到很多图像)平均大约800kb。它迭代并下载所有图像,但它们都不可见,并且都是相同的文件大小。完整的图片网址在浏览器中打开时可以正常工作。

知道什么可能导致这样的问题吗?我不认为显示我的代码会有所帮助,但这里是我得到网址的部分:

print imagelink
filename = imagelink.split('/')[-1]
time.sleep(5)
urllib.urlretrieve(imagelink, filename)
time.sleep(5)

2 个答案:

答案 0 :(得分:2)

宏杰李,requests是urllib的包装器。因为它也是套接字的包装 - ))

使用urllib2可以实现相同的结果。

>>> import urllib2
>>> r = urllib2.urlopen('https://i.stack.imgur.com/tkGEv.jpg?s=328&g=1')
>>> with open("/home/ziya/Pictures/so_image.jpg", "wb") as img:
...     img.write(r.read())

enter image description here

答案 1 :(得分:0)

您应该尝试requests

import requests
url = 'https://i.stack.imgur.com/tkGEv.jpg?s=328&g=1'
r = requests.get(url)
with open('tkGEv.jpg', 'wb') as fd:
    for chunk in r.iter_content(chunk_size=128):
        fd.write(chunk)