爲了學習的目的,我試圖下載Buzzfeed文章的所有帖子圖像。下載的圖像是空白圖像,而不是實際圖像
這裏是我的代碼:
import lxml.html
import string
import random
import requests
url ='http://www.buzzfeed.com/mjs538/messages-from-creationists-to-people-who-believe-in-evolutio?bftw'
headers = headers = {
'User-Agent': 'Mozilla/5.0',
'From': '[email protected]'
}
page= requests.get(url)
tree = lxml.html.fromstring(page.content)
#print(soup.prettify()).encode('ascii', 'ignore')
images = tree.cssselect("div.sub_buzz_content img")
def id_generator(size=6, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for x in range(size))
for image in images:
with open(id_generator() + '.jpg', 'wb') as handle:
request = requests.get(image.attrib['src'], headers=headers, stream=True)
for block in request.iter_content(1024):
if not block:
break
handle.write(block)
什麼被檢索的圖像的所有110個字節大小,並查看他們只是一個空的圖像。我在我的代碼中做錯了什麼,導致了這個問題?如果有更簡單的方法來執行此操作,我不必使用請求。
嘗試添加一個用戶代理到您的請求。許多網絡服務器拒絕沒有用戶代理的請求。通常在抓取時在用戶代理中留下一個電子郵件地址,以便讓服務器所有者在您不批准抓取時與您聯繫。 –
@SteinarLima仍然沒有添加用戶代理的運氣。我用新代碼更新了OP。我相信我正確實施了用戶代理? – ComputerLocus
另一個說明:您不應該將這些圖像保存在您的計算機上。他們會讓你看起來很愚蠢。 –