• Нужно спарсить таблицу с сайта?

    hottabxp
    @hottabxp Куратор тега Python
    Сначала мы жили бедно, а потом нас обокрали..
    import requests
    from bs4 import BeautifulSoup
    from lxml import html
    import csv
    
    headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0',
    			'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
    }
    
    url = 'https://opi.dfo.kz/p/ru/DfoObjects/objects/teaser-view/25720?RevisionId=0&ReportNodeId=2147483637&PluginId=6c2aa36248f44fd7ae888cb43817d49f&ReportId=61005620'
    
    response = requests.get(url,headers=headers)
    
    file = open('data.csv','w') # Открываем файл на запись. Можно было использовать контекстный менеджер, но так думаю проще.
    writer = csv.writer(file) # Передаем в функцию writer дескриптор открытого файла.
    
    soup = BeautifulSoup(response.text,"html.parser")
    
    rows = soup.find('table',class_='dsnode-table').find('tbody').find_all('tr') # Ищем в html тег 'table' с классом 'dsnode-table',
    # далее в найденом ищем тег 'tbody' и наконец ищем все теги 'tr'. Тег 'tr' в html это тег строки таблицы. В результате, в rows 
    # у нас окажутся все теги 'tr', тоесть все строки таблицы.
    
    for row in rows: # Проходимся по всем строкам. При каждой итерации, в row у нас будет следующая строка таблицы, вместе с html тегами.
    	columns = row.find_all('td') # Ищем в текущей строке таблици все теги 'td'. В html td - это тег ячейки.
    	data_list = [columns[0].text,columns[1].text,columns[2].text,columns[3].text,columns[4].text,columns[5].text,columns[6].text,columns[7].text,columns[8].text]
    	# Так как в каждой строке 9 ячеек, а элементы списка в большинстве ЯП нумеруюются с нуля, то мы можем обратится к конкретной ячейке
    	# текущей строки по индексу. Первая ячейка будет columns[0], а последняя, тоесть девятая - columns[8]. Создаем список 'data_list',
    	# и заносим в него все ячейки текущей строки. Но, так как в columns кроме текстовых данных также присутствуют html теги, мы обращаемся 
    	# к свойству .text, что-бы получить сам текст, без тегов.
    	writer.writerow(data_list) # Записываем текущую строку в csv файл. 
    	# Далее цикл продолжается, пока не достигнет конца таблицы(условно, так как все строки таблици мы уже получили, и они хранятся в 'rows')
    
    file.close() # Так как мы не используем контекстный менеджер with, обязательно закрываем открытый файл.

    Результат:
    5f31c1f7ca811013254566.png
    Ответ написан
    Комментировать
  • Как конвертировать html в css?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Как фронтенд-разработчик со стажем, говорю вам, это совершенно лишнее и так никто не делает. Что вас удручает, то что 2 раза приходится писать названия классов, один раз в html, второй раз в css? Это вовсе не плохо, когда идет интенсивный рабочий процесс, такие казалось бы задержки идут только в плюс, пока вы пишите название класса, переносите его в css (ctrl+c, ctrl+v), вы обдумываете этот класс, его содержимое. Очень часто в этот момент вы решаете что-то изменить, переименовать класс или вообще убрать. Вот где гибкость разработки. А то что вы хотите - это банально не удобно.
    Ответ написан
    Комментировать