from bs4 import BeautifulSoup
import csv
def rename_uik_number(uik_bad_name):
true_name = uik_bad_name.split(' ')[1:]
true_name1 = ''.join(true_name)[1:]
return true_name1
def rename_part(part_bad):
true_val = part_bad.split('\n')[1]
return true_val
def get_data():
f = open('sites/1.html', 'r').read()
soup = BeautifulSoup(f, 'lxml')
body = soup.find('body')
table = body.find('table', width="100%", cellpadding="0", height="80%").find('tbody')
trs = table.find('tr', height="100%")
table2 = trs.find('table', style="width:100%;border-color:#000000").find('tbody').find('tr', style="height:100%")
table3 = table2.find('td', width="90%").find('div', style="width:100%; bgcolor:white;overflow:scroll").find(
'table').find('tbody')
ntr = table3.find('tr', valign="top")
tds = ntr.find_all('td')
for td in tds:
uik_bad_name = td.find('nobr').find('a').text
uik_name = rename_uik_number(uik_bad_name)
# data = {'uik_name': uik_name}
# write_csv(data)
vtr = table3.find_all('tr')[18:]
for vt in vtr:
tds = vt.find_all('td')
for td in tds:
part_bad = td.text
part = rename_part(part_bad)
# data = {
# 'part': part
# }
# write_csv(data)
def write_csv(data):
with open('uiki.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow([
data['uik_name'],
data['part'],
])
def main():
get_data()
if __name__ == '__main__':
main()
from bs4 import BeautifulSoup
import csv
def parsing(filename):
with open(filename,encoding='cp1251') as file:
data = file.read()
soup = BeautifulSoup(data,"lxml")
table1 = soup.select_one("table[style='width:100%;border-color:#000000']").select("table")[0] # Выбираем таблицу 1
table2 = soup.select_one("table[style='width:100%;border-color:#000000']").select("table")[1] # Выбираем таблицу 2
list1 = [] # Здесь будет список строк из первой таблицы
list2 = [] # Здесь будет список строк из второй таблицы
dataFromTable1 = table1.find_all('tr') # Ищем все теги tr в первой таблице
for data in dataFromTable1[1:]: # Начинаем перебор со второго элемента, чтобы пропустить заголовок таблицы
try:
datalist = [] # Список для временного хранения каждой строки таблицы
id, text, summa = data.find_all('td')
datalist.append(id.text)
datalist.append(text.text)
datalist.append(summa.text.strip())
list1.append(datalist) # Добавляем в цикле в список list1 список строк
except ValueError:
#HACK Не добавляем в список пустые строки
pass
dataFromTable2 = table2.find_all('tr')
for data in dataFromTable2[1:]:
td_tags = data.find_all('td')
try:
datalist = [] # Список для временного хранения каждой строки таблицы
for tag in td_tags:
datalist.append(tag.text.strip())
if len(datalist) > 9: # Чтобы пропустить пустую строку в таблице, добавляем в список list2 только список, в котором больше 9-ти элементов
list2.append(datalist) # Добавляем в цикле в список list2 список строк
except ValueError:
pass
new_list = [] # Здесь будет объединенный список из list1 и list2
for e,x in enumerate(list1): # объединением списки
x.extend(list2[e])
new_list.append(x)
with open('uiki.csv','a') as file:
writer = csv.writer(file)
writer.writerows(new_list)
parsing('index.html') # Имя файла(или полный путь)