Ошибка 'NavigableString' object has no attribute 'find_all'

Рейтинг: 0Ответов: 1Опубликовано: 20.01.2023

Пишу парсер вк, который мог бы подсчитать лайки под постами. Мой код нже выдает ошибку: 'NavigableString' object has no attribute 'find_all' Подскажите, пожалуйста, что произошло? Заранее большое спасибо!

    url = 'https://vk.com/realnoevremya_official'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
    (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'}
    html = requests.get(url, headers = headers).text
    soup = BeautifulSoup(html, 'html.parser')
    like_count = soup.find('span', {'class':"PostBottomAction__count _like_button_count 
    _counter_anim_container PostBottomAction__count--withBg"}).text
    posts = parsed.find('div', {'class':"_post"})
    for post in posts:
        print(post.find_all('div', {'class':"like_btns"}))

Текст ошибки:

AttributeError                            Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_1608\1637301214.py in <module>
      1 for post in posts:

----> 2     print(post.find_all('div', {'class':"like_btns"}))

~\Anaconda3\lib\site-packages\bs4\element.py in __getattr__(self, attr)
    
963             return self
    
964         else:
--> 
965             raise AttributeError(
    
966                 "'%s' object has no attribute '%s'" % (
    
967                     self.__class__.__name__, attr))

AttributeError: 'NavigableString' object has no attribute 'find_all'

Ответы

▲ 0

Собственный же и ответ: нужно было сначала для постов применить find_all, а в цикле - find

    url = 'https://vk.com/realnoevremya_official'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
    AppleWebKit/537.36 
    (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36'}
    html = requests.get(url, headers = headers).text
    soup = BeautifulSoup(html, 'html.parser')
    like_count = soup.find('span', {'class':"PostBottomAction__count 
    _like_button_count 
    _counter_anim_container PostBottomAction__count--withBg"}).text
    posts = soup.find_all('div', {'class':"_post"})
    for post in posts:
        print(post.find('div', {'class':"like_btns"}))