Python Scraper Не удалось очистить img src

Я не могу очистить изображения с веб-сайта www.kissmanga.com. Я использую Python3 и библиотеки Requests и Beautifulsoup. Теги очищенных изображений дают пустой «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» для очистки содержимого.


person ibz    schedule 15.07.2015    source источник
comment
Недавно я заметил, что изображения загружаются через javascript. поэтому я просто проанализировал javascript, содержащий код.   -  person ibz    schedule 08.08.2015


Ответы (2)


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

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

Мне удалось заставить его работать с Selenium:

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')

См. Как загрузить изображение с помощью запросов, если вы также хотите загрузить эти изображения. .

person Dušan Maďar    schedule 15.07.2015
comment
есть ли способ сделать это, не открывая браузер? Кстати, ваше решение работает хорошо. Спасибо. - person ibz; 15.07.2015
comment
ну, я не уверен, может быть, с пользовательским агентом, как упоминал @Kupiakos; если единственная проблема с решением selenium заключается в том, что оно фактически открывает окно браузера, вы можете использовать безголовый браузер, например PhantomJS - person Dušan Maďar; 15.07.2015
comment
взгляните на это: stackoverflow .com/questions/6025082/ - person Dušan Maďar; 15.07.2015

Пробовали ли вы установить пользовательский агент пользователя? Обычно это считается неэтичным, но то же самое относится и к очистке манги.

person Alyssa Haroldsen    schedule 15.07.2015