Задать вопрос
@AntonIgin

Как распарсить сайт на Питоне?

Делаю сейчас парсинг по одному тутору. Вот код, который набрал:

import requests
from bs4 import BeautifulSoup

def main(url):
    print(parse(get_html(url)))
    
def get_html(url):
    response = requests.get(url)
    return response.text
def parse(html):
    soup = BeautifulSoup(html, 'lxml')
    table = soup.find_all('div', class_='listing__item  premium js-productBlock')
    return table
    
url = 'http://irr.ru/real-estate/apartments-sale/'

main(url)


В ответ пустой список. Не понимаю почему - я же вижу, что класс у контейнеров называется listing__item premium js-productBlock, но почему-то ни одного не находит. Что я делаю не так?
  • Вопрос задан
  • 656 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
rOOse
@rOOse
Frontend developer
А почему lxml, а не html.parser?
Я так делал, все находило:
soup = BeautifulSoup(page, "html.parser")
songitems = soup.findAll("div", "listenSongItem")
Ответ написан
@immaculate
Программист-путешественник
Внимательно читайте документацию: https://www.crummy.com/software/BeautifulSoup/bs4/...

Ищите либо по одному имени класса, либо перечисляйте их ровно так же, как они написаны в исходнике страницы, либо используйте регулярное выражение или функцию. .find_all недостаточно умен, чтобы знать как интерпретировать атрибут class.
Ответ написан
LazyTalent
@LazyTalent
Data Engineer, Freelancer
table = soup.select('div.listing__item.js-productBlock.js-similarAdvert')

или
table = soup.find_all('div', {'class': ['listing__item', 'js-productBlock', 'js-similarAdvert']})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы