2015-07-15 6 views
1

Я не могу очистить изображения с веб-сайта www.kissmanga.com. Я использую библиотеки Python3 и Requests и Beautifulsoup. Скребковые теги изображений дают пустой «src».Скребок Python Невозможно очистить img src

SRC:

from bs4 import BeautifulSoup 
import requests 

scraper = cfscrape.create_scraper() 

url = "http://kissmanga.com/Manga/Bleach/Bleach-634--Friend-004?id=235206" 

response = requests.get(url) 

soup2 = BeautifulSoup(response.text, 'html.parser') 

divImage = soup2.find('div',{"id": "divImage"}) 

for img in divImage.findAll('img'): 
    print(img) 

response.close() 

Я думаю, что соскоб изображения предотвращен, потому что я считаю, что сайт использует CloudFlare. По этому предположению я также попытался использовать библиотеку cfscrape для очистки содержимого.

+0

Недавно я заметил, что изображения загружаются через javascript. поэтому я просто проанализировал javascript, содержащий код. – ibz

ответ

2

Вам нужно подождать JavaScript, чтобы ввести код изображения html.

несколько инструментов, которые способны сделать это, вот некоторые из них:

Я был в состоянии заставить его работать с Селен:

from bs4 import BeautifulSoup 

from selenium import webdriver 
from selenium.common.exceptions import TimeoutException 

driver = webdriver.Firefox() 
# it takes forever to load the page, therefore we are setting a threshold 
driver.set_page_load_timeout(5) 

try: 
    driver.get("http://kissmanga.com/Manga/Bleach/Bleach-634--Friend-004?id=235206") 
except TimeoutException: 
    # never ignore exceptions silently in real world code 
    pass 

soup2 = BeautifulSoup(driver.page_source, 'html.parser') 
divImage = soup2.find('div', {"id": "divImage"}) 

# close the browser 
driver.close() 

for img in divImage.findAll('img'): 
    print img.get('src') 

Обратитесь к How to download image using requests, если вы также хотите загрузить эти изображения.

+0

есть ли способ сделать это, не открывая браузер? Кстати ваше решение работает хорошо. Спасибо вам. – ibz

+0

ну, я не уверен, может быть, с пользовательским агентом, упомянутым @Kupiakos; , если единственная проблема с решением селена заключается в том, что он фактически открывает окно браузера, вы можете использовать браузер без заголовка, например 'PhantomJS' – dm295

+0

, чтобы посмотреть на это: http://stackoverflow.com/questions/6025082/headless-browser -for-python-javascript-support-required – dm295

0

Вы пробовали установить custom user-agent? Обычно считается неэтичным делать это, но так же очищает мангу.

+0

Есть ли у вас образец кода? – ibz