Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2018, 11:50   #1
clav9nski
Пользователь
 
Аватар для clav9nski
 
Регистрация: 04.07.2017
Сообщений: 33
По умолчанию парсинг Python

Привет всем, столкнулся с проблемой, понадобились данные с сайта, вручную очень долго скачивать файлы, попробовал парсить, но выводит ошибку и не могу со станции скачать файл, может кто нибудь подскажет? Или как то иначе код построить, буду очень признателен
Код:
import urllib.request

from bs4 import BeautifulSoup


def get_html(url):
    response = urllib.request.urlopen(url)
    return response.read()

def parse(html):
    soup = BeautifulSoup(html)
    table = soup.find("table")          #"select",onchange="getRegion()")
    rows = table.find_all("td")
    
    projects = []
    for row in rows:

        cols = row.find_all('td')

        projects.append({
            'title': cols[0].a.text
            })
    
    print(row)
    

def main():
    parse(get_html('http://weather.uwyo.edu/upperair/europe.html'))



if __name__=='__main__':
    main()
конечная цель, чтоб получить информацию с сайта/данные за весь год(за каждый месяц и день)
clav9nski вне форума Ответить с цитированием
Старый 30.01.2018, 20:05   #2
lux16
Форумчанин
 
Аватар для lux16
 
Регистрация: 11.02.2009
Сообщений: 305
По умолчанию

Цитата:
Сообщение от clav9nski Посмотреть сообщение
Привет всем, столкнулся с проблемой, понадобились данные с сайта, вручную очень долго скачивать файлы, попробовал парсить, но выводит ошибку и не могу со станции скачать файл, может кто нибудь подскажет? Или как то иначе код построить, буду очень признателен
Код:
import urllib.request

from bs4 import BeautifulSoup


def get_html(url):
    response = urllib.request.urlopen(url)
    return response.read()

def parse(html):
    soup = BeautifulSoup(html)
    table = soup.find("table")          #"select",onchange="getRegion()")
    rows = table.find_all("td")
    
    projects = []
    for row in rows:

        cols = row.find_all('td')

        projects.append({
            'title': cols[0].a.text
            })
    
    print(row)
    

def main():
    parse(get_html('http://weather.uwyo.edu/upperair/europe.html'))



if __name__=='__main__':
    main()
конечная цель, чтоб получить информацию с сайта/данные за весь год(за каждый месяц и день)
Так то для начала надо было предоставить то, что тебе отдает консоль, а потом только спрашивать
Хочу быть лучшим, но пока что я только обычный =(
lux16 вне форума Ответить с цитированием
Старый 30.01.2018, 23:00   #3
clav9nski
Пользователь
 
Аватар для clav9nski
 
Регистрация: 04.07.2017
Сообщений: 33
По умолчанию

ошибки исправил, но не могу понять как мне извлечь файл/данные с сайта
Код:
import urllib.request

from bs4 import BeautifulSoup  


def get_html(url):
    response = urllib.request.urlopen(url).read()
    return response

def parse(html):
    soup = BeautifulSoup(html,'html.parser')
    table = soup.find("body")
    rows = table.find_all("pre")
    
    projects = []
    for row in rows:
        cols = row.find_all('pre')

        #projects.append({
        #    'title': cols[0].a.text
        #    })
    
    print(rows)
    
def main():
    parse(get_html('http://weather.uwyo.edu/cgi-bin/sounding?region=europe&TYPE=TEXT%3ALIST&YEAR=2018&MONTH=01&FROM=3000&TO=3000&STNM=26063')) # or http://weather.uwyo.edu/upperair/europe.html   
    


if __name__=='__main__':
    main()
clav9nski вне форума Ответить с цитированием
Старый 01.02.2018, 12:17   #4
nick-one
Пользователь
 
Регистрация: 28.03.2017
Сообщений: 35
По умолчанию

После того как получил содержимое тега pre, html закончился.

Дальше разбиваешь содержимое на строки через split('\n'), а полученные строки разбиваешь по пробелам через split(), в полученном списке(из строки) доступ к данным по индексам, если нужны числа, тогда float('123.4').

Как-то так.
nick-one вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документации, учебники, уроки и полезные материалы по Python, PyQt, PySide pompiduskus Python 4 22.07.2022 10:16
Начальный уровень Python. Функции - Python YYYUUU Python 5 09.06.2017 12:09
Парсинг WeezyWayne Общие вопросы Delphi 6 26.04.2014 18:29
Парсинг Pearl777 Работа с сетью в Delphi 7 29.04.2013 22:19
Поиск ошибки в Python-коде [парсинг запроса и генерация ответа WebSocket] russian-stalker Python 0 03.06.2011 12:34