학습 목적으로 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
다른주의 사항 : 귀하는 그러한 이미지를 컴퓨터에 보관하지 않아야합니다. 너를 어리석게 만들거야. –