Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Парсинг сайтов на питоне

Богдан Бондаренко Ученик (237), закрыт 1 год назад
Я уже попробовал с около 10 сайтами, всегда выдаёт пустой список, почему? Вроде всё правильно
https://colab.research.google.com/drive/1CylRVYRyrJe4A4fxa37hj7J94GRlSNbN?usp=sharing
Лучший ответ
Vitness Просветленный (35240) 1 год назад
Точку убери
 '.col-lg-3 col-sm-6 list_bl_pr' 
->
'col-lg-3 col-sm-6 list_bl_pr'


 import requests 
from bs4 import BeautifulSoup as bs

url = 'https://store77.net/telefony_apple/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0'}


def get_soup(url):
res = requests.get(url, headers)
return bs(res.text, 'html.parser')


a_page = get_soup(url)
a = a_page.find_all('div', 'col-lg-3 col-sm-6 list_bl_pr')
for x in a:
print('1')
работает.
Богдан БондаренкоУченик (237) 1 год назад
У меня он всё равно ничего не выводит. И вообще, я случайно не ту ссылку скинул, я хотел задать вопрос к этой: https://colab.research.google.com/drive/1MXfpRaDjmAM-0QQx7NUDMTPB7ugd-yh-?usp=sharing
Vitness Просветленный (35240) Богдан Бондаренко,
Богдан БондаренкоУченик (237) 1 год назад
Есть идеи, как убрать комментарии? Потому что по индексам не получится из-за разных длин строк в каждом таком классе
Vitness Просветленный (35240) Богдан Бондаренко, если текст там реально разделен новым строками - просто пройтись по каждой строке и обрезать все, что начинается с // Если нет, то какой-нибудь регуляркой вырезать
Остальные ответы
V̲i̲s̲t̲a̲s̲t̲e̲r̲ Искусственный Интеллект (273700) 1 год назад
На статических элементах код работает. Если загрузка динамическая, то надо загрузить страницу в фоновом режиме и затем отпарсить.

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup as bs
...

Демо работы:
 import requests 
from bs4 import BeautifulSoup as bs

url = 'https://habr.com/'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0'
}

def get_soup(url):
res = requests.get(url, headers=headers)
return bs(res.text, 'html.parser')

a_page = get_soup(url)
a = a_page.find_all('div', class_='v-portal')

if len(a) > 0:
for x in a:
print('1')
else:
print('Не найдено элементов с указанным классом.')
Богдан БондаренкоУченик (237) 1 год назад
https://www.kinopoisk.ru/lists/movies/top250/ - но, по идеи, здесь все должно работать без селениума, но, у меня почему-то не работало: https://colab.research.google.com/drive/1MD6cxyOOBHw_G4e3CjQQv9J-q4i6WBrJ?usp=sharing
Похожие вопросы