Найти - Пользователи
Полная версия: маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.
Начало » Python для новичков » маленькая программа парсинга веб ресурса. Пож-ста помогите проверить и оптимизировать.
1
gtlhbkkj
родил свою первую программу.
задача
- текстовая строка посылается запросом на вебсайт
- результат (ответ вебсайта) считывается в локальный файл
- локальный файл обрабатывается / парсится в список
.
программа работает, выдает удовлетворительные результаты
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'], [], []]
zahar
не понимаю…… зачем сохранять в файл…парсите страницу сразу и дергайте нужные данные
gtlhbkkj
zahar
не понимаю…… зачем сохранять в файл…парсите страницу сразу и дергайте нужные данные
в файл для наглядности, чтобы я видел как это выглядит
Вы повторили мне мой второй вопрос
2) как мне сделать всё то же самое на лету, не записывая считанный ответ вебсайта в файл?
благодарю
zahar
так у вас уже все и так есть
r = requests.get(url)
soup = BeautifulSoup(r.text, ‘html.parser’)
ну а далее уже парсим find_all и далее

в чем именно у Вас затыки парса на лету?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB