Carson1

Untitled

Jun 18th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.59 KB | None | 0 0
  1. import requests
  2. from bs4 import BeautifulSoup
  3. import re
  4. import datetime
  5. import dateutil.parser as dparser
  6. from docx import Document
  7. import os
  8. class analyssaita:
  9.     def __init__(self):
  10.         self.page = requests.get('https://www.pkmpei.ru/')
  11.         self.soup = BeautifulSoup(self.page.text, 'html.parser')
  12.     def timetable(self):
  13.         data =[]
  14.         self.timetable = dict()
  15.         table = self.soup.find("table", { "class" : "form-grid thin-grid" })
  16.         table_body = table.find('tbody')
  17.         rows = table_body.find_all('tr')
  18.         for row in rows:
  19.             cols = row.find_all('td')
  20.             cols = [ele.text.strip() for ele in cols]
  21.             data.append([ele for ele in cols if ele])
  22.         for i in range(len(data)):
  23.             self.timetable[i] = data[i]
  24.         for i in range(len(self.timetable)):
  25.             for j in range(len(self.timetable[i])):
  26.                 if '\xa0' in self.timetable[i][j]:
  27.                     self.timetable[i][j] = self.timetable[i][j].replace('\xa0', ' ')
  28.                 if '*' in self.timetable[i][j]:
  29.                     self.timetable[i][j] = self.timetable[i][j].replace('*', '')
  30.             self.timetable[i] = self.timetable[i][0] + ': ' + self.timetable[i][1]
  31.         print(self.timetable)
  32.     def adress(self):
  33.         adress = str(self.soup(class_="text"))
  34.         start = 'Наш адрес'
  35.         end = '/><br/><h1'
  36.         adress = adress[adress.find(start)+len(start):adress.rfind(end)]
  37.         start1 = '<div style="text-align: left;">'
  38.         end1 = ', аудитория Б-209<br'
  39.         adress1 = adress[adress.find(start1)+len(start1):adress.rfind(end1)]
  40.         print(adress1)
  41.         start2 = '<div style="text-align: left;">'
  42.         end2 = '<br'
  43.         self.adress2 = adress[adress.find(start2)+len(start2):adress.rfind(end2)]
  44.         adress1 =adress1.replace(' ', '')
  45.         self.adress1 = 'https://www.google.com/search?q=' + adress1
  46.         print(self.adress1)
  47.     def contactniedannie(self):
  48.         contactniedannie = str(self.soup(class_="text"))
  49.         start = 'Контактные данные'
  50.         end = '</span><br/> </b></b>'
  51.         start1 = '</h1> <br/> <b>'
  52.         end1 = '<b><br/>'
  53.         contactniedannie = contactniedannie[contactniedannie.find(start)+len(start):contactniedannie.rfind(end)] + 'JFKLDSJFLSD'
  54.         self.telefon = contactniedannie[contactniedannie.find(start1)+len(start1):contactniedannie.rfind(end1)]
  55.         print(self.telefon)
  56.         start3 = '<span style="color: rgb(0, 0, 255);">'
  57.         end3 = 'JFKLDSJFLSD'
  58.         self.email = 'e-mail: ' + contactniedannie[contactniedannie.find(start3)+len(start3):contactniedannie.rfind(end3)]
  59.         print(self.email)
  60.     def novosti(self):
  61.         novosti = self.soup.find_all(id="right_news_item")
  62.         urls = []
  63.         data = []
  64.         text1 = []
  65.         self.novosti = dict()
  66.         for i in novosti:
  67.             f = i.find('a')
  68.             d = f.get_attribute_list('href')[0]
  69.             urls.append('https://www.pkmpei.ru' + d)
  70.         for i in urls:
  71.             page = requests.get(i)
  72.             soup = BeautifulSoup(page.text, 'html.parser')
  73.             text = soup.find_all(class_= 'text')
  74.             for i in text:
  75.                 data.append(i.find(class_= 'title3').text)
  76.                 text1.append(i.find('h1').text)
  77.         for i in range(len(data)):
  78.             self.novosti[data[i]] = 'НОВОСТИ:' + '\n' + data[i] + '\n' + text1[i] + '\n' + 'Ссылка: ' + urls[i]
  79.         print(self.novosti)
  80. t = analyssaita()
  81. t.timetable()
  82. t.adress()
  83. t.contactniedannie()
  84. t.novosti()
Advertisement
Add Comment
Please, Sign In to add comment