Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2022, 22:53   #1
Delok123
 
Регистрация: 16.04.2022
Сообщений: 6
По умолчанию помогите разобраться в request и BS4

Добрый вечер тренируюсь в скрапинге(только начал заниматься по видосам чисто для себя), и вот столкнулся с проблемой не могу написать код так чтобы парсер заходил на каждую карточку товара и отдавал все необходимо мне от туда.

мой код:


Код:
from bs4 import BeautifulSoup
import requests
import random
from time import sleep

good_cards = list()
list_cards_urls = list()
domain_name = 'https://scrapingclub.com'
headers = {
    "user-agent": "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ""Chrome/108.0.0.0 Safari/537.36"
}

for count in range(1, 2):
    sleep(random.randrange(2, 3))
    url = f'https://scrapingclub.com/exercise/list_basic/?page={count}'
    req = requests.get(url, headers).text
    soup = BeautifulSoup(req, "lxml")
    cards = soup.find_all('div', class_='col-lg-4 col-md-6 mb-4')

    for card in cards:
        card_url = domain_name + card.find('a').get('href')
        list_cards_urls.append(card_url)


for card_url in list_cards_urls:


    req = requests.get(card_url, headers)
    soup = BeautifulSoup(req.text, "lxml")

    card_data = soup.find('div', class_='col-lg-4 col-md-6 mb-4')
    good_name = card_data.find('h3', class_='card-title')
    price = card_data.find('h4').text
    text = card_data.find('p', class_="card-text").text
    img = domain_name + card_data.find('img', class_='card-img-top img-fluid').get('src')
    v = f'{good_name} => {price} => {card_url} \n DISCRIPTION: {text}'
    good_cards.append(v)
#
for good in good_cards:
     print(good)
генерирует исключение :

Цитата:
good_name = card_data.find('h3', class_='card-title')
AttributeError: 'NoneType' object has no attribute 'find'
потому что:
1) после получения первичных данных с страницы сайта с полным html содержимым
2) отделаю ссылки на карточки
но дальше при проходе циклом фор возвращает None почему так происходит я не знаю помогите разобраться интерес распирает)))

=================================== =================================== ===================================

СПАСИБО ДОРЫЕ ЛЮДИ ПОМОГЛИ!

=================================== =================================== ===================================

Вопрос № 2:
почему если я пытаюсь сохранить страницу сайта в формате html у меня ничего не пишется в файл?(т.е. он остается пустой и генерируется ошибка)

такая:
Цитата:
return codecs.charmap_encode(input,self.er rors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2764' in position 12965: character maps to <undefined>

Последний раз редактировалось Delok123; 10.12.2022 в 23:07.
Delok123 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
c++ help request ogou Помощь студентам 0 21.06.2022 11:42
Подмена Request URI CyberX346 PHP 0 09.09.2018 10:54
OPTIONS request _SanR JavaScript, Ajax 0 04.07.2013 16:02
извлечь из request имя jsp Музыкант Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) 0 07.01.2013 15:37
xml http request. Как с этим разобраться? Web-Gangsta JavaScript, Ajax 8 02.06.2009 02:31