Как соскрести текст с <p>элементов "id" - PullRequest
0 голосов
/ 06 июля 2018

Я учусь царапать, тогда я не очень продвинут. Я бы вычеркнул из Bloomberg описание компании. Например, с этой страницы (https://www.bloomberg.com/research/stocks/private/snapshot.asp?privcapId=320105)

Я бы хотел очистить

<p id="bDescTeaser" itemprop="description">Fiat Chrysler Automobiles N.V., ...</p>


Мой сценарий:

from urllib.request import Request, urlopen
from bs4 import BeautifulSoup
html= 'https://www.bloomberg.com/research/stocks/private/snapshot.asp? 
privcapId=32010'
page = urlopen(html)
data = BeautifulSoup(page, 'html.parser')
text = data.find('p',id="bDescTeaser",itemprop="  ")
print(text.get_text))

Если я пытаюсь запустить полученную программу,

AttributeError: 'NoneType' object has no attribute 'get_text'

Это проблема с моим кодом или с этим конкретным веб-страницей?

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

get_text () должна быть открыта в круглых скобках. Измените его с get_text) на get_text ()

0 голосов
/ 06 июля 2018

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

import requests
from bs4 import BeautifulSoup

header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0'}
request = requests.get('https://www.bloomberg.com/research/stocks/private/snapshot.asp?privcapId=320105',headers=header)
soup = BeautifulSoup(request.text, 'html.parser')    
text = soup.find('p',id="bDescTeaser")
print(text.get_text())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...