2017-12-16 1 views
0

대부분의 경우 작동하는 간단한 이미지 스크레이퍼 스크립트를 작성했습니다. 나는 좋은 그림이있는 웹 사이트를 발견했다. 나는 링크를 긁어 모으고 싶다. 스크립트는 정상적으로 작동하지만 불필요한 base64 데이터 이미지 링크를 인쇄합니다. 이 base64 링크를 어떻게 제외시킬 수 있습니까?BeautifulSoup의 원치 않는 base64 링크를 제외하십시오.

import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.hongkiat.com/blog/60-most-execellent-ubuntu-wallpapers/') 
soup = BeautifulSoup(r.content, 'lxml') 

for link in soup.find_all('img'): 
    image = (link.get('src')) 
    print image 

출력 :

https://assets.hongkiat.com/uploads/60-most-execellent-ubuntu-wallpapers/cloudy-ubuntu-mate.jpg 
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 
https://assets.hongkiat.com/uploads/60-most-execellent-ubuntu-wallpapers/ubuntu-feeling.jpg 
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 
https://assets.hongkiat.com/uploads/60-most-execellent-ubuntu-wallpapers/two-gentlemen-in-car.jpg 
data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 

업데이트. 도움 주셔서 감사합니다. 완성 된 코드는 모든 이미지를 다운로드하는 것처럼 보입니다. 건배 :)

import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.hongkiat.com/blog/60-most-execellent-ubuntu-wallpapers/') 
img_url = 'https://assets.hongkiat.com/uploads/60-most-execellent-ubuntu-wallpapers/' 
soup = BeautifulSoup(r.content, 'lxml') 

for link in soup.select('img[src$=".jpg"]'): 
    image = (link['src']) 
    image_name = (img_url + image).split('/')[-1] 
    print ('Downloading: {}'.format(image_name)) 
    r2 = requests.get(image) 
    with open(image_name, 'wb') as f: 
     f.write(r2.content) 

답변

1

사진을주세요. 원하는 결과를 가져올 것입니다. .find_all() 대신 여기 .select()을 사용했습니다.

import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.hongkiat.com/blog/60-most-execellent-ubuntu-wallpapers/') 
soup = BeautifulSoup(r.content, 'lxml') 

for link in soup.select('img[src$=".jpg"]'): 
    print(link['src']) 

또는 당신은 .find_all()를 사용하여 동일한 작업을 수행하는 것을 선호하는 경우 :

for link in soup.find_all('img'): 
    if ".jpg" in link['src']: 
     print(link['src']) 
+0

가, 감사합니다. 이 경우 find_all 대신 select를 사용하면됩니까? 그리고'('img [src $ = ". jpg"]')'? – uzdisral

+0

수정 된 부분보기. – SIM

+0

굉장합니다. 내 코드도 업데이트했습니다. 다시 한번 감사드립니다. – uzdisral