BeautifulSoup не собирает текст из тегов классов span или section

У меня возникли трудности с распечаткой текста с этой страницы, так как BeautifulSoup не получает теги класса span или section. Я хотел бы вытащить текст из Пестрого дурака, а затем разобрать по предложениям.

https://www.fool.com/earnings/call-transcripts/2019/04/26/exxon-mobil-corp-xom-q1-2019-earnings-conference-c.aspx

Пока что, когда он изредка подтягивает текст, синтаксический анализ предложений работает, однако красивый суп лишь изредка подтягивает текст.

from textblob import TextBlob
from html.parser import HTMLParser
import re
def news(): 
    # the target we want to open     
    url = dataframe_url

    #open with GET method 
    resp=requests.get(url) 

    #http_respone 200 means OK status 
    if resp.status_code==200: 

        soup = BeautifulSoup(resp.text,"html.parser")

        #l = soup.find("span",attrs={'class':"article-content"})
        l = soup.find("section",attrs={'class':"usmf-new article-body"})

        #print ('\n-----\n'.join(tokenizer.tokenize(l.text)))
        textlist.extend(tokenizer.tokenize(l.text))

    else: 
        print("Error")

person pythonbs4m    schedule 25.06.2019    source источник
comment
Можете ли вы привести пару примеров предложений, которые не тянут? Кроме того, вы пробовали soup.find_all() вместо soup.find()?   -  person Jack Fleeting    schedule 25.06.2019
comment
Я пытаюсь извлечь весь текст стенограммы из URL-адреса, вот пример предложения в html: ‹p›Всем доброго дня. Добро пожаловать на объявление о прибылях и убытках корпорации ExxonMobil за первый квартал 2019 года. Сегодняшний звонок записывается.‹/p›   -  person pythonbs4m    schedule 28.06.2019


Ответы (1)


Чтобы записать стенограмму, вы можете попробовать что-то вроде этого и изменить в соответствии с вашими потребностями:

import requests
from bs4 import BeautifulSoup as bs

with requests.Session() as s:
    response = s.get('https://www.fool.com/earnings/call-transcripts/2019/04/26/exxon-mobil-corp-xom-q1-2019-earnings-conference-c.aspx')

soup = bs(response.content, 'lxml')

heads = soup.find_all('h2')
selections = ['Prepared Remarks:','Questions and Answers:']

for selection in selections:
    for head in heads:
        if head.text == selection:
            for elem in head.findAllNext():
                if elem.name != 'script':                    
                    print(elem.text)
                if 'Duration' in elem.text:
                    break

Дайте мне знать, если это достаточно близко.

person Jack Fleeting    schedule 28.06.2019
comment
Я ценю помощь, я действительно выяснил, что Motley Fool занес мой IP в черный список, поскольку я получил ошибку Max Retries SSL. Я предполагаю, что им действительно не нравится просмотр веб-страниц, поскольку у меня были подобные ошибки в прошлом! - person pythonbs4m; 28.06.2019