Проблема с Scape в красивом супе, объект NoneType не имеет атрибута find_all - PullRequest
0 голосов
/ 01 мая 2020

Попытка выполнить этот код для очистки указанных c веб-сайтов / RSS-каналов, указанных здесь ниже, продолжает получать:

Трассировка (последний последний вызов):

Файл "C : \ Users \ Jeanne \ Desktop \ PYPDIT \ pyscape.py ", строка 28, в transcripts = [url_to_transcript (u) для вас в URL]

Файл" C: \ Users \ Jeanne \ Desktop \ PYPDIT \ pyscape.py ", строка 28, в стенограммах = [url_to_transcript (u) для вас в URL]

Файл" C: \ Users \ Jeanne \ Desktop \ PYPDIT \ pyscape.py ", строка 17, в url_to_transcript text = [p.text для p в soup.find (class _ = "itemcontent"). Find_all ('p')]

AttributeError: у объекта 'NoneType' нет атрибута 'find_all'

Пожалуйста, сообщите.

import requests
from bs4 import BeautifulSoup
import pickle

def url_to_transcript(url):

page = requests.get(url).text
soup = BeautifulSoup(page, "lxml")
text = [p.text for p in soup.find(class_="itemcontent").find_all('p')]
print(url)
return text

URL-адреса транскриптов в области

urls = ['http://feeds.nos.nl/nosnieuwstech',
        'http://feeds.nos.nl/nosnieuwsalgemeen']

transcripts = [url_to_transcript(u) for u in urls]

1 Ответ

0 голосов
/ 01 мая 2020

Возвращенное значение html отличается от того, что вы видите на странице. Вы можете использовать следующее:

import requests
from bs4 import BeautifulSoup
 # import pickle

urls = ['http://feeds.nos.nl/nosnieuwstech','http://feeds.nos.nl/nosnieuwsalgemeen']

with requests.Session() as s:
    for url in urls:
        page = s.get(url).text
        soup = BeautifulSoup(page, "lxml")
        print(url)
        print([[i.text for i in desc.select('p')] for desc in soup.select('description')[1:]])
        print('--'*100)
...