websrcaping html </time> с бс4 - PullRequest
       2

websrcaping html </time> с бс4

0 голосов
/ 10 апреля 2020

Я создаю веб-браузер для себя, чтобы собирать финансовые данные и новости от Reuters. Пока что это работает как шарм, за исключением времени / даты. Пример: on https://www.reuters.com/companies/WDIG.DE/profile - это поле события, подобное этому: enter image description here

Дата «30 апреля 2020 года» содержится в источнике, подобном этому :

<time class="TextLabel__text-label___3oCVw TextLabel__white___32MyF TextLabel__regular___2X0ym EventLabel-date-4_Sun">Apr 30, 2020</time>

Но

result = requests.get(site)
soup = bs.BeautifulSoup(result.text, 'lxml')
soup.find('time', {'class': 'TextLabel__text-label___3oCVw TextLabel__white___32MyF TextLabel__regular___2X0ym EventLabel-date-4_Sun'}).text

ничего не возвращает, т. Е. Данные, которые я хочу (30 апреля 2020 г.), отсутствуют в ответе, который я получаю по моему запросу. Кто-нибудь знает, как заставить это работать?

1 Ответ

0 голосов
/ 10 апреля 2020

Здесь есть 2 фрагмента кода, первый из которых вы сделали.

Фрагмент 1:

import requests
import bs4

site = "https://www.reuters.com/companies/WDIG.DE/profile"
result = requests.get(site)
soup = bs4.BeautifulSoup(result.text, 'lxml')
with open('soup_1.txt', 'w', encoding='utf8') as f:
    f.write(soup.prettify())
print(soup.find('time', {'class': 'TextLabel__text-label___3oCVw TextLabel__white___32MyF TextLabel__regular___2X0ym EventLabel-date-4_Sun'}).text)

вывод:

<time class="TextLabel__text-label___3oCVw TextLabel__white___32MyF TextLabel__regular___2X0ym EventLabel-date-4_Sun"></time>

Фрагмент 2:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(options=chrome_options)

driver.set_page_load_timeout(40)
driver.get(site)
soup = bs4.BeautifulSoup(driver.page_source, "html.parser")

with open('soup_2.txt', 'w', encoding='utf8') as f:
    f.write(soup.prettify())

driver.quit()
print("done")

вывод:

<time class="TextLabel__text-label___3oCVw TextLabel__white___32MyF TextLabel__regular___2X0ym EventLabel-date-4_Sun">Apr 30, 2020</time>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...