Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2019 19:32:44

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.

родил свою первую программу.
задача
- текстовая строка посылается запросом на вебсайт
- результат (ответ вебсайта) считывается в локальный файл
- локальный файл обрабатывается / парсится в список
.
программа работает, выдает удовлетворительные результаты
1. пожста помогите указать что я сделал неправильно или что нужно оптимизировать
2 как мне сделать всё то же самое на лету, не записывая считанный ответ вебсайта в файл?
заранее благодарю
.



 # функция для отправки веб запроса и записи результатов в файл
def fg_list_bot(_name_element, _output_file):
    s = requests.Session()
    _data = {"value": _name_element, "submit": "SEARCH"}
    r = requests.post(_url, data=_data)
    with open(_output_file, "w") as f: f.write(r.text)
    print(r.status_code)
# Функция для парсинга результатов
def f_parse(_output_file):
    with open(_output_file) as f: 
        soup = BeautifulSoup(f, "html.parser")
        
    i = 0               # необходимо пропустить первый цикл, иначе фигня лезет в данные
    spisok = []         # инициализация конечного массива
    subspisok  = []     # инициализация промежуточного массива
    
    for _match in soup.find_all("tr"):                 # проходим по крупным блокам
        for _match1 in _match.find_all("td"):          # проходим по мелким блокам внутри крупного  
            _match2 = _match1.text.replace("\t","")    # убираем знаки табуляции
            _match3 = _match2.split("\n")              # делим строку на части
            _match4 = list(filter(None, _match3))      # убираем из списка пустые значения
            subspisok.append(_match4)
        if i > 0:
            spisok.append(subspisok)
        i += 1   
        subspisok  = [] # обнуление промежуточного массива
    for i in spisok:    # визуальная проверка результатов
        print(i)
    print("конец выполнения программы")
import requests
from bs4 import BeautifulSoup
_url = "https://tools.filtrationgroup.com/index.php"
_name_element = "RHR1300D"      # текст запроса который посылаем в форму
_output_file = "IDLE_pedrillo.html"
fg_list_bot(_name_element, _output_file)
f_parse(_output_file)

результат выполнения программы
 [['Please Contact Us for a Part Number'], [], ['Please Contact Us for a Part Number'], [], ['RHR1300D03B'], [], []]
[['Please Contact Us for a Part Number'], ['H1300RN1006AV'], ['Please Contact Us for a Part Number'], ['H1300RN1006AV'], ['RHR1300D05B'], [], []]
[['72382226'], ['H1300RN1010OV'], ['72382226'], ['H1300RN1010OV'], ['RHR1300D10B5', 'RHR1300N10B5'], [], []]
[['Please Contact Us for a Part Number'], ['H1300RN1025AV'], ['Please Contact Us for a Part Number'], ['H1300RN1025AV'], ['RHR1300D20B'], [], []]

Отредактировано gtlhbkkj (Сен. 25, 2019 19:45:59)

Офлайн

#2 Сен. 26, 2019 11:48:31

zahar
Зарегистрирован: 2013-07-15
Сообщения: 39
Репутация: +  3  -
Профиль   Отправить e-mail  

маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.

не понимаю…… зачем сохранять в файл…парсите страницу сразу и дергайте нужные данные

Офлайн

#3 Сен. 26, 2019 15:37:46

gtlhbkkj
Зарегистрирован: 2019-09-20
Сообщения: 173
Репутация: +  2  -
Профиль   Отправить e-mail  

маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.

zahar
не понимаю…… зачем сохранять в файл…парсите страницу сразу и дергайте нужные данные
в файл для наглядности, чтобы я видел как это выглядит
Вы повторили мне мой второй вопрос
2) как мне сделать всё то же самое на лету, не записывая считанный ответ вебсайта в файл?
благодарю

Офлайн

#4 Сен. 26, 2019 16:25:54

zahar
Зарегистрирован: 2013-07-15
Сообщения: 39
Репутация: +  3  -
Профиль   Отправить e-mail  

маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.

так у вас уже все и так есть
r = requests.get(url)
soup = BeautifulSoup(r.text, ‘html.parser’)
ну а далее уже парсим find_all и далее

в чем именно у Вас затыки парса на лету?

Отредактировано zahar (Сен. 26, 2019 16:27:51)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version