Top.Mail.Ru
Ответы

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

Я уже попробовал с около 10 сайтами, всегда выдаёт пустой список, почему? Вроде всё правильно
https://colab.research.google.com/drive/1CylRVYRyrJe4A4fxa37hj7J94GRlSNbN?usp=sharing

Только авторизированные пользователи могут оставлять свои ответы
Дата
Популярность
Аватар пользователя
Новичок

Точку убери

123
 '.col-lg-3 col-sm-6 list_bl_pr' 
->
'col-lg-3 col-sm-6 list_bl_pr'  



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

работает.

Аватар пользователя
Искусственный Интеллект

На статических элементах код работает. Если загрузка динамическая, то надо загрузить страницу в фоновом режиме и затем отпарсить.

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

Демо работы:

123456789101112131415161718192021
 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('Не найдено элементов с указанным классом.')