Ответы пользователя по тегу Парсинг
  • Парсинг пагинация?

    datka
    @datka
    Узнаешь сколько страниц.
    и тупо перебираешь урл с page-1, page-2, page-3 ... page-8 в вашем случае

    import requests
    
    base_url = "https://www.ursus.ru/catalogue/zashchita_ot_padeniy_s_vysoty/page-"
    
    pages = 8
    
    for i in range(1, pages + 1):
        print(f"Page: {i}")
        print(f"{base_url}{i}/")
        requests.get(f"{base_url}{i}.")
    Ответ написан
  • Не работает парсер на pyhton bs4, что делать?

    datka
    @datka
    Скорее всего проблема в header-ax

    добавь в код
    headers = {
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)\
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36"
    }


    и поменяй
    data = requests.get(url, headers=headers)

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://realt.by/sale-flats/object/2562548/"
    
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N)\
    AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Mobile Safari/537.36"
    }
    
    data = requests.get(url, headers=headers)
    soup = BeautifulSoup(data.text, features="html.parser")
    img = (
        soup.find("div", attrs={"class": "swiper-wrapper"})
        .findAll("img", class_="blur-sm scale-105")[1]
        .get("src")
    )
    print(img)


    https://static.realt.by/thumb/c/600x400/6f57b1d409f96f2b1ede7f082f120b50/ja/e/site15nf8eja/7c30f38145.jpg
    Ответ написан
    1 комментарий
  • Почему метод find_all из bs4 возвращает пустой список?

    datka
    @datka
    spoiler
    from bs4 import BeautifulSoup
    import requests
    
    
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
    
    estrade_url = 'https://www.instagram.com/estrade.pmk/'
    page = requests.get(estrade_url,headers=headers)
    soup = BeautifulSoup(page.content, 'html.parser')
    print(soup.prettify())


    Сравните ввыдод print(soup.prettify()) с тем что видите вы.
    Без selenium тут не обойтись.
    Я бы поступил так. Получил через селениум страницу. сохранил ее как index.html и дальше парсил.
    Или не сохранял, а просто через селениум спарсил цифру.

    Подход у всех разный
    Ответ написан
    Комментировать
  • Как вытащить все ссылки на загрузку файлов с сайта?

    datka
    @datka
    1 ) Скачиваешь и устанавливаешь Python. ( ставишь галочку для PATH )https://www.python.org/downloads/
    2) Win+R -> pip install requests > OK
    3) Win+R -> pip install bs4 > OK
    4) Создаешь папку на рабочем столе.
    5) Создаешь два фаила в папке.
    5.1) Первый фаил например get_links.py , туда вставляешь этот
    КОД
    import requests
    from bs4 import BeautifulSoup
    
    main_url = 'https://uristhome.ru'
    docs_url = "https://uristhome.ru/document"
    headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
    
    down_link = []
    
    r = requests.get(docs_url, headers=headers)
    soup = BeautifulSoup(r.content, 'html.parser')
    for doc in soup.find("ul",{"class": "y_articles-document-list"}):
        down_link.append(main_url+doc.find("a").attrs['href'])
        
    with open('download_link.txt', 'a') as nf:
        nf.writelines('\n'.join(docs))
    потом сохраняешь фаил.
    5.2) Создаешь второй фаил например download_links.py туда вставляешь уже этот
    КОД
    import requests
    from bs4 import BeautifulSoup
    
    headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36"}
    down_link = open('download_links.txt', 'r')
    
    docs = []
    counter = 0 
    for links in down_link.readlines():
        try:
            r = requests.get(links, headers=headers)
            soup = BeautifulSoup(r.content, 'html.parser')
            x = soup.find("div",{"class": "filefield-file"}).find("a").attrs['href']
            counter += 1
            print(counter)
            print(x)
            docs.append(x)
        except:
            pass
    
    with open('documents_link.txt', 'a') as nf:
        nf.writelines('\n'.join(docs))


    Как это работает:
    1) открываешь get_links.py в папке создается текстовой файл с ссылками на документы
    2) отрываешь download_links.py он будет обрабатывать тот текстовой файл. по окончанию создаст еще 1 текстовой файл documents_link.txt с ссылками на документы.
    Ответ написан
    Комментировать
  • Хочу сделать вывод анекдота с сайта, но выдает ошибку, что я делаю не так?

    datka
    @datka
    import requests
    from bs4 import BeautifulSoup
    
    def get_first_news():
       headers = {
           'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.109 Safari/537.36 OPR/84.0.4316.52'
       }
    
       url = 'https://www.anekdot.ru/random/anekdot/'
       r = requests.get(url=url, headers=headers)
    
       soup = BeautifulSoup(r.text, 'html.parser')
    
       anecdot = soup.find_all('div', class_="text")
    
       for article in anecdot:
           article_title = article.text.strip()
           print(article_title)
    
    get_first_news()
    Ответ написан
    4 комментария
  • Как спарсить сайт по значению Эксель и вернуть найденный текст в таблицу?

    datka
    @datka
    Вот прямо готовых решений по типу кликнул и все заработало нету.
    Если знаете язык программирования Python то можно попробовать сделать так: Поставить библиотеки openpyxl , requests

    Через openpyxl можно вытянуть данные из вашего ексель файла.
    Через requests можно будет передать извлеченные данные на ваш сайт. и получить в ответ вам нужные данные. После можно снова через openpyxl записать вытянутые данные с сайта в ексель. Зависит от сайта. Если у сайта есть доступ к АPI то можно через json всё это сделать. Если нету то библиотека beautifulsoup в помощь.

    Если в программирование знаний нету, то вам сюда. https://freelance.habr.com/ Думаю обойдется где-то 2 бутылки пива )
    Ответ написан
    Комментировать
  • Как спарсить строки на Python?

    datka
    @datka
    soup = BeautifulSoup(html)
    author_text = soup.find('i',{'class':'icon icon-user'})
    email_text = soup.find('i',{'class':'icon icon-support'})
    phone_text = soup.find('i',{'class':'icon icon-phone'})
    
    print(author_text.next)
    print(email_text.next)
    print(phone_text.next)

    Вывод:
    Пыльнев  Анатолий
    tollik36@mail.ru
    89055663563


    Старый Ответ
    from bs4 import BeautifulSoup
    html="""
    <tr>
    <td>
    <br/><br/>
    <i class="icon icon-user" data-selector=".icon" title="Автор"></i>   Барышева Олеся<br/>
    <i class="icon icon-support" data-selector=".icon" title="E-mail"></i>   olesya052019@bk.ru<br/>
    <i class="icon icon-phone" data-selector=".icon" title="Телефон"></i>   89188565504<br/>
    </td>
    </tr>
    """
    soup = BeautifulSoup(html)
    my_text = soup.find('td')
    print(my_text.get_text().split())

    Вывод.
    ['Барышева', 'Олеся', 'olesya052019@bk.ru', '89188565504']

    Либо без .split(), смотря как вы хотите получать/хранить данные.
    Барышева Олеся
    olesya052019@bk.ru
    89188565504


    UPD: Если у вас будет больше одного человека в коде можно сделать так.
    from bs4 import BeautifulSoup
    
    html="""
    <tr>
    <td>
    <br/><br/>
    <i class="icon icon-user" data-selector=".icon" title="Автор"></i>   Барышева Олеся<br/>
    <i class="icon icon-support" data-selector=".icon" title="E-mail"></i>   olesya052019@bk.ru<br/>
    <i class="icon icon-phone" data-selector=".icon" title="Телефон"></i>   89188565504<br/>
    </td>
    </tr>
    
    <tr>
    <td>
    <br/><br/>
    <i class="icon icon-user" data-selector=".icon" title="Автор"></i>   Иван Иванович<br/>
    <i class="icon icon-support" data-selector=".icon" title="E-mail"></i>   obi_van_ia9@bk.ru<br/>
    <i class="icon icon-phone" data-selector=".icon" title="Телефон"></i>   232321113312<br/>
    </td>
    </tr>
    
    <tr>
    <td>
    <br/><br/>
    <i class="icon icon-user" data-selector=".icon" title="Автор"></i>   Темный лорд<br/>
    <i class="icon icon-support" data-selector=".icon" title="E-mail"></i>   pirojok51@mail.ru<br/>
    <i class="icon icon-phone" data-selector=".icon" title="Телефон"></i>   80002111122<br/>
    </td>
    </tr>
    """
    
    soup = BeautifulSoup(html)
    my_text = soup.findAll('td')
    for text in my_text:
        print(text.get_text().split())


    Вывод будет таков

    ['Барышева', 'Олеся', 'olesya052019@bk.ru', '89188565504']
    ['Иван', 'Иванович', 'obi_van_ia9@bk.ru', '232321113312']
    ['Темный', 'лорд', 'pirojok51@mail.ru', '80002111122']
    Ответ написан
    5 комментариев
  • Как парсить (python/django) рейтинг IMDb и Кинопоиск себе на сайт?

    datka
    @datka
    В теории тебе нужна база данных где будут храниться рейтинги. Потом надо решить, ты будешь парсить весь IMDB/Кинопоиск или у тебя будет список фильмов-сериалов для которых надо будет искать рейтинг.

    1) Если весь IMDB/Кинопоиск. То тебе придется парсить каждый фильм по отдельности. Брать оттуда рейтинг и класть в базу. На этом этапе надо подумать, как сделать так что-бы твой IP addr не забанили за парсинг. Плюс ко всему прочему такое может быть что название фильма на IMDB не будет совпадать с названием фильма на Кинопоиске, а это отдельный геморой. Также не забываем время за которое сделается парсинг.

    2) Если список фильмов-сериалов для которых надо будет искать рейтинг. Тут немного попроще, делаешь список и может через API, может через requests делаешь поиск по сайтам фильма. Дальше парсишь ссылку на сам фильм и берешь рейтинг если в поиске конечно не показывает рейтинг.

    Так ты получишь рейтинг IMDB / Кинопойска. А потом Надо будет решить как обновлять рейтинг. Тут тоже много гемороя. Ну и как это всё прикрутить к django

    ПС: последуй примеру как тебе написали в коментах. Начни с простого.
    Ищи в гугле: BeautifulSoup, Selenim, Requests, Python
    Ответ написан
    Комментировать
  • Как правильно вытащить кусок текста с помощью bs4?

    datka
    @datka
    from bs4 import BeautifulSoup
    import re
    
    html = """ 
    <p class="order-quantity j-orders-count-wrapper" data-link="class{merge: selectedNomenclature^ordersCount < 1 toggle='hide'}">Купили
     <span data-link="{include tmpl='productCardOrderCount' ^~ordersCount=selectedNomenclature^ordersCount}">
    <script type="jsv#29_"></script>    
    <script type="jsv#27^"></script>
    <script type="jsv#30_"></script>        
    <script type="jsv#26^"></script>более 700 раз<script type="jsv/26^">
    </script>   
     <script type="jsv/30_"></script>
    <script type="jsv/27^"></script>
    <script type="jsv/29_"></script>
    </span>
    </p>
    """
    soup = BeautifulSoup(html)
    
    full_text = re.sub(' +', ' ',soup.find('p').get_text().strip().replace(u'\n', u' '))
    print(full_text)
    
    number = re.findall("[0-9]+",soup.find('p').get_text())
    print(nunber)
    Ответ написан
    1 комментарий
  • Как правильно экспортировть в Excel из Словоёб?

    datka
    @datka
    Это формат CVS, возможно данные были в json. Смотрите в сторону Text to Columns.Тут. Либо пишите в тех поддержку софта каким вы пользуетесь.

    2 минуты поиска гугла... 5. В разделе “Интерфейс” можно выбрать формат файл...
    Ответ написан
    1 комментарий
  • Сделал парсер, выдает None?

    datka
    @datka
    'foto':item.find('img', class_='listing__image')["data-src"]
    Ответ написан
    Комментировать
  • Как написать парсер в который вы вводите данные?

    datka
    @datka
    Парсишь список с сайта, потом кидаешь этот список в List или Dict, делаешь свой List или Dict, а дальше сравниваешь их, а дальше по ситуации смотря что надо делать...
    Ответ написан
    Комментировать
  • Как парсить данные из личного кабинета (python)?

    datka
    @datka
    1) Скачиваете Python
    2) Устанавливаете Beautifulsoup pip install bs4 . а также requests pip install requests, через Win+R или cmd
    3) Вот документация BeautifulSoup, вот requests. Вот примеры кода.
    4) Путем проб и ошибок пишите код.
    Ответ написан
    7 комментариев
  • Как спарсить html и вытащить список элементов?

    datka
    @datka
    1) Скачиваете Python
    2) Устанавливаете Beautifulsoup pip install bs4 . а также requests pip install requests, через Win+R или cmd
    3) Вот документация BeautifulSoup, вот requests. Вот примеры кода.
    4) Путем проб и ошибок пишите код.
    5) Профит.

    Таким образом можно получить ссылки
    item = soup.find('a', class_="sih-inspect-magnifier")
    print(item[href])

    Дальше запихнуть это все в цикл.
    Ответ написан
    Комментировать
  • Как написать код на Python для парсинга с определенной страницы?

    datka
    @datka
    BeautifulSoup
    Selenium
    requests
    openpyxl

    Вот принципе что вам нужно.Читайте документацию.Пишите код.
    Также можете обратиться к фрилансу.
    Ответ написан
    Комментировать
  • Парсинг фотографии с сайта инстаграм с помощью BeautifulSoup?

    datka
    @datka
    10 секунд поиска гугла...

    If you look at the source code for the page, you'll see that some javascript generates the webpage. What you see in the element browser is the webpage after the script has been run, and beautifulsoup just gets the html file. In order to parse the rendered webpage you'll need to use something like Selenium to render the webpage for you.

    So, for example, this is how it would look with Selenium:
    from bs4 import BeautifulSoup
    import selenium.webdriver as webdriver
    
    url = 'http://instagram.com/umnpics/'
    driver = webdriver.Firefox()
    driver.get(url)
    
    soup = BeautifulSoup(driver.page_source)
    
    for x in soup.findAll('li', {'class':'photo'}):
        print x




    soup.findAll('li', {'class':'photo'}) меняете на ваши нужды
    Ответ написан
  • Как получить значение с сайта?

    datka
    @datka
    Отладчик не нужен. view-source:https://habr.com/ru/post/442800/ в хроме и ищите
    <span class="post-stats__comments-count" title="Читать комментарии">21</span>

    И после уже парсите через requests + BeautifulSoup
    import requests
    from bs4 import BeautifulSoup
    
    pageURL = "https://habr.com/ru/post/442800/"
    
    req = requests.get(pageURL)
    soup = BeautifulSoup(req.content, 'html.parser')
    comments = soup.find('span', {'class': 'post-stats__comments-count'}).get_text()
    print('Количество комментариев на '+ pageURL + ' : ' +comments)


    Документация в помощь.
    Ответ написан
    Комментировать
  • Сбор внешних данных с сайта и отправка на устройство, как сделать?

    datka
    @datka
    . Как это можно сделать самым простым способом?

    Зайти на фриланс биржу. Попросить там за определенную цену.

    Или парсить данные с сайта через Python в связке BeautifullSoup. Прикрутить туда телеграмм бота который будет передавать данные с сайта.
    Ответ написан
    Комментировать