BeautifulSoup не собирает текст из тегов классов span или section - PullRequest
0 голосов
/ 25 июня 2019

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

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")

1 Ответ

0 голосов
/ 28 июня 2019

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

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

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

...