Теорию в виде текста не получается осваивать.
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, обязательно закрываем открытый файл.
import os
from threading import Thread
def listen(filename, count):
# запускаем в отдельном потоке команду
t = Thread(target=os.system, args=((f'ping -c {count} yandex.ru > {filename}'),))
t.start()
# ждем начала работы потока, после чего открываем файл
while not os.path.exists(filename):
pass
else:
f = open(filename, 'r')
i = 0
while i <= count:
data = f.read()
if data:
print(data)
i += 1
listen('out', 5) from subprocess import Popen, PIPE
def get_ping():
args = ["ping", "-n", "4", "www.ya.ru"] # -n требуются права Администратора
process = Popen(args, stdout=PIPE)
"""
# Построчное чтение данных
for line in process.stdout:
print("stdout:", line.decode('cp866'))
"""
data, error = process.communicate() # Распаковка кортежа
print(error)
return data.decode(encoding='cp866') # cp866 для Windows
def main():
print(get_ping())
input()
if __name__ == '__main__':
main() def translit(name):
dictionary = {'a':'а','b':'б','v':'в','g':'г','d':'д','e':'e',
'zh':'ж','z':'з','i':'и','y':'й','k':'к','l':'л','m':'м','n':'н',
'o':'о','p':'п','r':'р','s':'с','t':'т','u':'у','f':'ф','kh':'х',
'ts':'ц','ch':'ч','sh':'ш','shch':'щ','ъ':'','ie':'ы','ь':'','ei':'э',
'yu':'ю','ja':'я'}
end_index = 0
start_index = 0
while start_index < len(name):
last_match = ''
while end_index < len(name)+1:
if name[start_index:end_index] in dictionary:
last_match = name[start_index:end_index]
end_index += 1
print(last_match, '=', dictionary[last_match])
start_index += len(last_match)
end_index = 0