Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from bs4 import BeautifulSoup
- import xlwt
- base_url = 'http://www.probankrot.ru/node/'
- file_name_dir = 'd:\\parsing\\'
- start_id = 1137718
- stop_id = 1146595
- #240913
- #test_start 30 000 14-33
- cookies = dict(has_js='1', _ym_uid='1478644484684538441', _ga='GA1.2.217895697.1478644484', _ym_isad='1',
- _ym_visorc_28334906='w',
- SESSa173b0bdcae299427c4087d7f72d00db='bXmvKQe6AYlLDBebWoHipA2AUhFHjmpi8V25zF1RvB4', gat='1')
- def get_html(url):
- r = requests.get(url, cookies=cookies)
- return r.text
- # не забываем про куки
- # Если нужно будет работать с аукционами допиши даты приема заявок(для публичных приложений не нужно)
- def parser(html):
- pars_data = {}
- # 1)Статус торгов 2)Номер лота, 3)Вид лота
- # 4)Цена лота 5)Текущая/Итоговая цена 6)Минимальная цена
- # 7) Предмет торгов (не забудь подправить дублироание и лишнюю инфу)
- # 8) Регион 9) Ссылка на лот в федресурсе 10) Ссылка на лот на площадке
- # 11)Дата начала торгов 12)Дата окончания торгов
- pars_data_list = []
- soup = BeautifulSoup(html, 'html.parser')
- node_panel = soup.find(class_='node_panel')
- if node_panel is None:
- pars_data_list = []
- else:
- node_panel = soup.find(class_='node_panel')
- if node_panel.find(class_='lot_status') is None:
- pars_data_list = []
- else:
- lot_status = node_panel.find(class_='lot_status')
- lot_status = lot_status.get_text()
- lot_status = lot_status.strip()
- pars_data_list.append(lot_status)
- lot_card_node = node_panel.find(class_='lot_card_node')
- nomer_lota = lot_card_node.find(class_='nomer_lota')
- nomer_lota = nomer_lota.string
- nomer_lota = nomer_lota[(nomer_lota.find('№') + 1):]
- nomer_lota = nomer_lota.strip()
- pars_data_list.append(nomer_lota)
- s_vid_lota = node_panel.find(class_='s_vid_lota')
- s_vid_lota = s_vid_lota.find(class_='s_vid_lota')
- s_vid_lota = s_vid_lota.string
- s_vid_lota = s_vid_lota.strip()
- pars_data_list.append(s_vid_lota)
- s_start_price = node_panel.find(class_='s_start_price')
- s_start_price = s_start_price.string
- s_start_price = s_start_price.strip()
- pars_data_list.append(s_start_price)
- s_now_price = node_panel.find(class_='s_prices')
- s_now_price = s_now_price.find(class_='s_now_price')
- s_now_price = s_now_price.find(class_='s_prices_value')
- if s_now_price is None:
- s_now_price = 'Не изестно'
- pars_data_list.append(s_now_price)
- else:
- s_now_price = s_now_price.string
- s_now_price = s_now_price.strip()
- pars_data_list.append(s_now_price)
- s_min_price = node_panel.find(class_='s_prices')
- s_min_price = s_min_price.find(class_='s_min_price')
- s_min_price = s_min_price.find(class_='s_prices_value')
- if s_min_price is None:
- s_min_price = 'Не известно'
- pars_data_list.append(s_min_price)
- else:
- s_min_price = s_min_price.string
- s_min_price = s_min_price.strip()
- pars_data_list.append(s_min_price)
- node_sl_first = node_panel.find(class_='node_sl_first')
- predmet_torgov = node_sl_first.find(class_='predmet_torgov')
- predmet_torgov = predmet_torgov.get_text()
- predmet_torgov_one_str = ''
- for i in predmet_torgov.split('\n'):
- predmet_torgov_one_str += i + ' '
- pars_data_list.append(predmet_torgov_one_str)
- s_debtor = node_panel.find(class_='node_sl_first')
- s_debtor = s_debtor.find(class_='s_debtor')
- s_debtor = s_debtor.string
- s_debtor = s_debtor.strip()
- if s_debtor.find('Регион:') is not None:
- s_debtor = s_debtor[(s_debtor.find('Регион:') + len('Регион:')):]
- s_debtor = s_debtor.strip()
- else:
- s_debtor = s_debtor
- pars_data_list.append(s_debtor)
- fedrerurs_link = node_panel.find(class_='lot_card_node')
- fedrerurs_link = fedrerurs_link.find(id='node_tabs')
- if fedrerurs_link.find(title='Страница лота на ЕФРСБ') is not None:
- fedrerurs_link = fedrerurs_link.find(title='Страница лота на ЕФРСБ')
- fedrerurs_link = fedrerurs_link['href']
- pars_data_list.append(fedrerurs_link)
- else:
- fedrerurs_link = 'Нет'
- pars_data_list.append(fedrerurs_link)
- area_link = node_panel.find(class_='lot_card_node')
- area_link = area_link.find(id='node_tabs')
- if area_link.find(title='Страница лота на площадке') is not None:
- area_link = area_link.find(title='Страница лота на площадке')
- area_link = area_link['href']
- pars_data_list.append(area_link)
- else:
- area_link = 'Нет'
- pars_data_list.append(area_link)
- begin_date = node_panel.find(id='dates')
- begin_date = begin_date.find(class_='dates_data_torgov')
- if begin_date is None:
- begin_date = 'Не известно'
- pars_data_list.append(begin_date)
- else:
- if begin_date.find(class_='date-display-start') is None:
- begin_date = 'Не известно'
- pars_data_list.append(begin_date)
- else:
- begin_date = begin_date.find(class_='date-display-start')
- begin_date = begin_date.string
- begin_date = begin_date.strip()
- pars_data_list.append(begin_date)
- end_date = node_panel.find(id='dates')
- end_date = end_date.find(class_='dates_data_torgov')
- if end_date is None:
- end_date = 'Не изестно'
- pars_data_list.append(end_date)
- else:
- if end_date is None:
- end_date = 'Не изестно'
- pars_data_list.append(end_date)
- else:
- if end_date.find(class_='date-display-end') is None:
- end_date = 'Не изестно'
- pars_data_list.append(end_date)
- else:
- end_date = end_date.find(class_='date-display-end')
- end_date = end_date.string
- end_date = end_date.strip()
- pars_data_list.append(end_date)
- return pars_data_list
- # Создаем словарь c распарсенными данными
- trade_card_dic = {}
- # Создаем список с колонками
- columns_list = ['Статус торгов', 'Номер лота', 'Вид лота', 'Цена лота',
- 'Текущая/Итоговая цена', 'Минимальная цена', 'Предмет торгов', 'Регион',
- 'Ссылка на лот на федресурсе', 'Ссылка на лот на площадке', 'Дата начала торгов',
- 'Дата окончания торгов']
- def exel_export(dict):
- counter = 0
- wb = xlwt.Workbook()
- ws = wb.add_sheet('test')
- font0 = xlwt.Font()
- font0.name = 'Times New Roman'
- font0.colour_index = 255
- font0.height = 280
- font0.bold = True
- font1 = xlwt.Font()
- font1.name = 'Times New Roman'
- font1.colour_index = 0
- font1.height = 100
- font1.bold = False
- style0 = xlwt.XFStyle()
- style0.font = font0
- style1 = xlwt.XFStyle()
- style1.font = font1
- # пишем шапку
- for i in range(0, len(columns_list)):
- ws.write(0, i, columns_list[i])
- counter += 1
- for i in dict:
- for j in range(0, len(dict.get(i))):
- ws.write(counter, j, dict.get(i)[j])
- counter += 1
- wb.save(file_name_dir + 'test.xls')
- while start_id != stop_id:
- print(start_id)
- html = get_html(base_url + str(start_id))
- if html.find('Доступ запрещен') != -1:
- start_id += 1
- else:
- trade_card_dic.setdefault(start_id)
- trade_card_dic[start_id] = parser(html)
- if trade_card_dic[start_id] == []:
- trade_card_dic.pop(start_id)
- start_id += 1
- else:
- start_id += 1
- exel_export(trade_card_dic)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement