Извлечь текст с веб-страницы - PullRequest
0 голосов
/ 01 февраля 2020

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

Вкл. https://www.smhi.se/vadret/vadret-i-sverige/meteorologens-kommentar#ws = wpt-a, proxy = wpt-a , area = 3 Я хотел бы извлечь текст из поля с именем «Prognos för Nordvästra Götaland» в текстовый файл. Я буду управлять этим на моем малиновом пи. Есть ли "простой" скрипт Beautifulsoup, чтобы сделать это? Я получил скрипт c при установке bs4, выглядит так:

import requests
from bs4 import BeautifulSoup
print "Opening site..."

f = requests.get('https://www.smhi.se/vadret/vadret-i-sverige/meteorologens-kommentar#ws=wpt-a,proxy=wpt-a,area=3')

soup = BeautifulSoup(f.text,'lxml')

print soup

Это печатает содержимое страницы html.

1 Ответ

0 голосов
/ 01 февраля 2020

Данные, которые вы видите на странице, загружаются динамически через JavaScript (поэтому BeautifulSoup здесь вам не поможет). Но вы можете смоделировать запрос Ajax с помощью модуля requests:

import json
import requests

data_url = 'https://www.smhi.se/wpt-a/backend_metcomments/frodo/oversikt_text'

data = requests.get(data_url).json()
# print(json.dumps(data, indent=4)) # <-- uncomment this to see all data

with open('output.txt', 'w') as f_out:
    print(data['districts']['NORDVÄSTRA GÖTALAND']['header'], file=f_out)
    print(data['districts']['NORDVÄSTRA GÖTALAND']['text'], file=f_out)

Это приведет к созданию файла output.txt с содержимым:

Mycket milt och en smula blåsigt
Mycket moln, sent i kväll och under inledningen av natten passerande regn. I morgon lördag skurar och 5-8 grader. Sydvästlig vind, efterhand med friska vindbyar.
...