Nano Hash - криптовалюты, майнинг, программирование

Простой скрипт очистки изображений Python

Здесь все довольно просто... Итак, в настоящее время я экспериментирую с python, и у меня очень мало опыта... Я хотел создать парсер изображений, который переходит на страницу, загружает ссылку на изображение (следующая страница) и загружает другое изображение и так далее (в качестве источника я использую сайт, похожий на 9gag). Прямо сейчас мой скрипт может просто печатать URL-адрес изображения и URL-адрес следующей ссылки, поэтому я не могу понять, как заставить моего бота щелкнуть ссылку, загрузить следующее изображение и делать это бесконечно (пока условие не будет выполнено/остановлено и т. д.)...

PS я использую BeautifulSoup4 (я думаю LOL)

Заранее спасибо, Зил

Вот как сейчас выглядит скрипт, я как бы объединял пару скриптов в один, поэтому скрипт выглядит очень нечисто...

import requests
from bs4 import BeautifulSoup
import urllib

def trade_spider(max_pages):
    page = 1
    while page <= max_pages:
        url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
        url = url2
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")

        for img in soup.findAll('img', {'class': 'img'}):
            temp = img.get('src')
            if temp[:1]=="/":
                image = "http://linksmiau.net" + temp
            else:
                image = temp

        print(image)


        for lnk in soup.findAll('div', {'id': 'arrow_right'}):
                nextlink = lnk.get('onclick')
                link = nextlink.replace("window.location = '", "")
                lastlink = "http://linksmiau.net" + link
                page += 1
        print(lastlink)
        url2 == lastlink

trade_spider(3)

Ответы:


1

Это фиксированный. Дуги Хаузер был прав, и я хочу пожать ему руку за это.

Я только что переместил строку url2 за пределы цикла while, и, похоже, все работает нормально, теперь все, что мне нужно, это выяснить, как сделать этот скрипт для сохранения изображений на моем жестком диске LOL.

def trade_spider(max_pages):
    url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
    page = 1
    while page <= max_pages:
#url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
        url = url2
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")
        #current_bet_id = "event_odd_id_31362885" #+ str(5)

        #for link in soup.findAll('span', {'class': 'game'}, itemprop="name"):
17.02.2016

2

Я бы не стал думать об этом с точки зрения «щелчка» по ссылке, поскольку вы пишете скрипт, а не используете браузер.

Что вам нужно, так это выяснить 4 вещи:

  1. Учитывая URL-адрес, как вы получаете HTML-код за ним и анализируете его с помощью BeautifulSoup - похоже, вы уже получили эту часть. :)

  2. Учитывая множество различных html-файлов, как вы определяете изображения, которые хотите загрузить, и ссылку «следующая». - Еще раз, красивый суп.

  3. Учитывая URL-адрес изображения (найденный в атрибуте «src» тегов <img>), как сохранить изображение на диск. Ответы можно найти в таких вопросах StackOverflow: Загрузка изображения через urllib и python< /а>

  4. Учитывая URL-адрес «следующей» ссылки, как вы «щелкаете» по ней — еще раз, вы на самом деле не «щелкаете», вы просто загружаете HTML-код по этой новой ссылке и запускаете весь цикл еще раз (анализируйте его, идентифицировать изображение и «следующую» ссылку», загрузить изображение, получить HTML-код за «следующей» ссылкой).

После того, как вы разобрали проблему, все, что осталось, — это собрать все в один хороший сценарий, и все готово.

Удачи :)

17.02.2016
  • эй, спасибо за ваш ответ, я думаю, что я в порядке с первыми 3 пунктами, которые вы упомянули выше, и я уверен, что 4-й шаг является проблемой здесь ... Я думаю, что не смогу разобраться сам, или, по крайней мере, это занимает слишком много времени... Я обновил исходный пост своим текущим сценарием, если у вас есть время, вы могли бы сказать мне, что не так... 17.02.2016
  • Почему бы не использовать request.get(url) для следующей ссылки? Если бы вы просто переместили первую строку внутри цикла while за пределы цикла while, это могло бы сработать (сейчас каждая итерация цикла while заставляет вас анализировать один и тот же URL-адрес). 17.02.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..