Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import requests
- from bs4 import BeautifulSoup
- import re
- class WikiArtHandler:
- def __init__(self):
- self.page = requests.get('https://www.wikiart.org/ru')
- self.soup = BeautifulSoup(self.page.text, 'html.parser')
- pass
- def get_genres(self):
- # возвращает список жанров
- artist_genre_list = self.soup.find(class_='popular-dictionaries view-dictionaries-container')
- d = artist_genre_list.get_attribute_list('ng-init')[0]
- d = re.split('[}{,;".}:]', d)
- self.genre_names = set()
- for i in range(len(d) - 1):
- for c in d[i]:
- if c.isupper():
- self.genre_names.add(d[i])
- useless_words = {'Title', 'Url', 'PopularDictionariesViewModel', 'popularDictionariesModel = ','Items', 'GroupTitle', 'TotalViews', 'Стиль', 'Высокое Возрождение '}
- self.genre_names.difference_update(useless_words)
- self.genre_names = list(self.genre_names)
- print(self.genre_names)
- pass
- def get_artists(self):
- # возвращает список художников
- artist_name_list = self.soup.find(class_='popular-artists view-dictionaries-container')
- d = artist_name_list.get_attribute_list('ng-init')[0]
- d = re.split('[}{,;".}:]', d)
- self.artist_names = set()
- for i in range(len(d) - 1):
- for c in d[i]:
- if c.isupper():
- self.artist_names.add(d[i])
- useless_words = {'Title', 'Url', 'PopularArtistsViewModel', 'popularArtistsModel = ','TotalViews'}
- self.artist_names.difference_update(useless_words)
- self.artist_names = list(self.artist_names)
- print(self.artist_names)
- pass
- def get_artist(self, genre):
- # возвращает список художников данного жанра
- self.genre = genre
- self.genres = dict()
- genres = self.soup.find(class_='popular-dictionaries view-dictionaries-container')
- d = genres.get_attribute_list('ng-init')[0]
- d = re.split('[}{,;.}]', d)
- for i in range(len(d) - 3):
- if genre in d[i]:
- self.genres[self.genre]=d[i + 1]
- self.genres[self.genre] = re.split('[ ":]', self.genres[self.genre])
- for i in range(len(self.genres[self.genre])):
- if '/' in self.genres[self.genre][i]:
- self.genres[self.genre] = self.genres[self.genre][i]
- self.url= 'https://www.wikiart.org' + self.genres[self.genre]
- page = requests.get(self.url)
- soup = BeautifulSoup(page.text, 'html.parser')
- artist_name_list = str(soup.find(class_='artists-list-container'))
- self.d = re.split('" ', artist_name_list)
- self.artist_names_works = dict()
- self.artist_from_genre = []
- for i in self.d:
- if 'target="_self"' in i:
- self.artist_from_genre.append(i)
- #print(self.artist_from_genre)
- start = 'target="_self">'
- end = '</a>'
- #print(self.artist_from_genre)
- for i in range(len(self.artist_from_genre)):
- self.artist_from_genre[i] = self.artist_from_genre[i][self.artist_from_genre[i].find(start)+len(start):self.artist_from_genre[i].rfind(end)]
- print(self.artist_from_genre)
- pass
- def get_works(self, artist):
- # возвращает список всех работ данного художника
- self.artist = artist
- self.artist_works = dict()
- for i in range(len(self.d)):
- if self.artist in self.d[i]:
- self.artist_works[self.artist] = self.d[i - 1]
- start = 'artistUrl='
- end = ' '
- self.artist_works[self.artist] = self.artist_works[self.artist][self.artist_works[self.artist].find(start)+len(start):self.artist_works[self.artist].rfind(end)]
- self.new_url= 'https://www.wikiart.org/ru/' + self.artist_works[self.artist]
- page = requests.get(self.new_url)
- soup = BeautifulSoup(page.text, 'html.parser')
- works = soup.find_all(class_='artwork-name')
- new_works = []
- for i in works:
- new_works.append(str(i))
- start1 = '">'
- end1 = '</a>'
- for i in range(len(new_works)):
- new_works[i] = new_works[i][new_works[i].find(start1)+len(start1):new_works[i].rfind(end1)]
- print(new_works)
- pass
- t = WikiArtHandler()
- print(t.get_genres())
- print(t.get_artists())
- print(t.get_artist(t.genre_names[1]))
- print(t.get_works(t.artist_from_genre[2]))
Advertisement
Add Comment
Please, Sign In to add comment