BeautifulSoup не возвращает None, хотя там что-то есть - PullRequest
0 голосов
/ 05 мая 2020

enter image description here

Я пытаюсь извлечь информацию о «выпущенных акциях» на Investing.com

, когда использую «Селектор копирования» "при щелчке правой кнопкой мыши дает:

    #leftColumn > div.clear.overviewDataTable.overviewDataTableWithTooltip > div:nth-child(14) > span.float_lang_base_2.bold

с помощью этого я попробовал код BeautifulSoup:

    from bs4 import BeautifulSoup
    import urllib.request as req


    res = req.Request("https://www.investing.com/equities/apple-computer-inc", headers={'User-Agent': 'Mozilla/5.0'})
    response = req.urlopen(res).read()

    soup = BeautifulSoup(response, "html.parser")

    num_shares = soup.select("#leftColumn > div.clear.overviewDataTable.overviewDataTableWithTooltip > div:nth-child(14) > span.float_lang_base_2.bold")
    print(num_shares)

Но результат дает: [] Так как там ничего нет.

Как это решить ...?

1 Ответ

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

Может быть проще использовать регулярное выражение, чтобы найти значение этого класса. Затем найдите конкретный текст и возьмите следующий элемент-брат.

import requests
from bs4 import BeautifulSoup
import re

url = 'https://www.investing.com/equities/apple-computer-inc'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')

overviewTbl = soup.find('div', {'class': re.compile(r"overviewDataTable")})
value = overviewTbl.find(text='Shares Outstanding').parent.next_sibling.text

Вывод:

print (value)
4,334,335,000

Использование .select

Но для использования селектора, я думаю, использование nth-of-type работает вместо nth-child. Или, по крайней мере, для меня.

num_shares = soup.select("div.clear.overviewDataTable.overviewDataTableWithTooltip > div:nth-of-type(14) > span.float_lang_base_2.bold")
print(num_shares)

Вывод:

[<span class="float_lang_base_2 bold">4,334,335,000</span>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...