Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import os
- from functions.supportfunctions import dump
- import requests
- from bs4 import BeautifulSoup as bs
- import re
- # url1 = 'https://www.vfbank.ru/fizicheskim-licam/monety/pamyatnye-monety/'
- # url2 = 'https://www.vfbank.ru/fizicheskim-licam/monety/'
- # urls = [url1, url2]
- def parsing_pam(url):
- cat_number = []
- buy_price = []
- sell_price = []
- start = url.find('bxdynamic_moneti_inner')
- end = url.find("'HASH':'844584f9f4f7',")
- data = url[start:end].replace('\\n', '').replace('\\', '')
- soup = bs(data, "lxml")
- coins = soup.find_all('div', class_='col col--lg-6')
- for coin in coins:
- cat_num = coin.find_all('span', class_="coin-line-detail__title")
- price = coin.find_all('span', class_="coin-line-detail__desc")
- cat_number.append(cat_num[1].text.replace('№', '').strip())
- buy_sell = price[1].text.strip().replace(' ','').replace('₽','').split('/')
- buy_price.append(float(buy_sell[0]))
- sell_price.append(float(buy_sell[1]))
- cont = {"sell": [{"cat_number": c, "price": s}
- for c, s in zip(cat_number, sell_price)],
- "buy": [{"cat_number": c, "price": b}
- for c, b in zip(cat_number, buy_price)]}
- print(cont)
- return cont
- def parsing_inv(url):
- sell = []
- buy = []
- re_sell_buy = re.compile(r'Продажа:.*?(\d+\s?\d{,3}).*?'
- r'Покупка:.*?(\d+\s?\d{,3}).*?', re.DOTALL)
- re_catnum = re.compile(r'Каталожный номер:.+?(\d{4}-\d{4})', re.DOTALL)
- soup = bs(url, "lxml")
- coins = soup.find_all('h2', class_='custom-widget-title coin__title')
- coin_name = [i.text.strip() for i in coins]
- for i in re_sell_buy.findall(url):
- # print(i)
- sell.append(float(i[0].strip().replace(' ', '').replace('\n', '').replace('\t', '')))
- buy.append(float(i[1].strip().replace(' ', '').replace('\n', '').replace('\t', '')))
- cat_number = [i for i in re_catnum.findall(url)]
- cont = {"sell": [{'coin_name': cn, "cat_number": c, "price": s}
- for cn, c, s in zip(coin_name, cat_number, sell)],
- "buy": [{'coin_name': cn, "cat_number": c, "price": s}
- for cn, c, s in zip(coin_name, cat_number, sell)]
- }
- # print(cont)
- return cont
- def parser(urls):
- cont = dict()
- for url in urls:
- if url == 'https://www.vfbank.ru/fizicheskim-licam/monety/pamyatnye-monety/':
- headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0',
- 'BX-ACTION-TYPE': 'get_dynamic',
- 'BX-CACHE-MODE': 'HTMLCACHE',
- }
- response = requests.get(url, headers=headers)
- cont.update(parsing_pam(response.text))
- elif url == 'https://www.vfbank.ru/fizicheskim-licam/monety/':
- response = requests.get(url)
- parsed = parsing_inv(response.text)
- for k in parsed.keys():
- if k in cont:
- cont[k].extend(parsed[k])
- else:
- cont[k] = parsed[k]
- return cont
- url1 = 'https://www.vfbank.ru/fizicheskim-licam/monety/pamyatnye-monety/'
- url2 = 'https://www.vfbank.ru/fizicheskim-licam/monety/'
- urls = [url1, url2]
- cont = parser(urls)
- print(cont)
Add Comment
Please, Sign In to add comment