SHARE
TWEET

Untitled

a guest Jul 22nd, 2019 46 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os, sys
  2. import numpy as np
  3. import array as arr
  4. import re
  5. from lxml import etree
  6. from lxml import html
  7. import urllib2
  8. from bs4 import BeautifulSoup
  9. import csv
  10. import codecs
  11. import shutil
  12. class BIBLE_CLASS:
  13.  
  14.     def __init__(self,path):
  15.         self.bookslist=[]
  16.  
  17.     def readBookList(self,path):    # Read the data from file
  18.         file=open(path,'r')
  19.         for x in file:
  20.         #   print(x)
  21.             self.bookslist.append(x)
  22.         #print(Bookslist)
  23.         #for i in range(1,len(self.bookslist)):
  24.         #   print(self.bookslist[i])
  25.  
  26.     def searchBook(self,book):  # Search the book ID in the books file
  27.         #bookcode=0
  28.         for i in range(1,len(self.bookslist)):
  29.             st=str(self.bookslist[i])
  30.             #st=st.upper()
  31.             #skey=book.upper()
  32.             #print(st,'',skey)
  33.             if(st.find(book)!=-1):
  34.                 temp=self.bookslist[i]
  35.                 index1=temp.index(',')
  36.                 #print(temp[0:index1])  
  37.                 bookcode=temp[0:index1]
  38.                 #print(bookcode)
  39.                 return bookcode
  40.  
  41.     def writeStoryFile(self,path):
  42.         # Writes data into story file
  43.         filext1=['.html']
  44.         print("writeStoryFile")
  45.         dirs=os.listdir(path)
  46.             pattern=re.compile("^v")
  47.         # CREATE A FOLDER WITH PATH+OUTPUTS AS NAME
  48.         outputfile=path+"outputs"
  49.         outpath=os.path.join(path,outputfile)
  50.         if os.path.exists(outpath):
  51.             shutil.rmtree(outpath)
  52.         else:
  53.             os.mkdir(outpath)
  54.         for d in dirs:  #For each directory extract stories from files
  55.             print("Directory name:",d)
  56.             btitle=d[d.rindex('_')+1:]
  57.             print(btitle)
  58.             print('Book code:',o1.searchBook(btitle))   # Book code is extracted
  59.             fullpath=os.path.join(path,d)
  60.             if os.path.isdir(fullpath):
  61.                 print("Converting folder",fullpath)
  62.                 files=os.listdir(fullpath)
  63.             rno=0
  64.             # GET THE BOOK CODE FROM THE FILE
  65.             btitle=d[d.rindex('_')+1:]  
  66.             #print(btitle)  
  67.             #print('Book code:',o1.searchBook(btitle))
  68.             bcode=o1.searchBook(btitle)
  69.             print(bcode)
  70.  
  71.             # CREATE STORY LINE FILE FOR EACH FOLDER
  72.             csvfile1=outpath+"/"+d+"story.csv"  # story line filename
  73.             f1 = codecs.open(csvfile1, encoding='utf-8',mode='w')   # Creating story lines file
  74.             csvfile2=outpath+"/"+d+"storyverses.csv"    # story line with verses files
  75.             csvfile3=outpath+"/"+d+"veses.csv"   # only verses      
  76.             f2 = codecs.open(csvfile2, encoding='utf-8',mode='w')
  77.             f3=codecs.open(csvfile3,  encoding='utf-8',mode='w')    
  78.             for f in files:
  79.                 fname,fext=os.path.splitext(f)
  80.                 rows=[]
  81.  
  82.                 if fext in filext1:
  83.                     print("=================Processing the file",f,"========================")
  84.                     # Process the file
  85.                     print "Stories in the chapter:"
  86.         #           fullpath=os.path.join(path,file)
  87.                     wpath=os.path.join(fullpath,f)
  88.                     text=open(wpath,"r")
  89.         #           csvfile1=wpath.replace('.html','story.csv') # story line filename
  90.                         html_doc=text.read()    
  91.                         soup = BeautifulSoup(html_doc, 'html.parser',from_encoding="utf-8")
  92.                         h3s = soup.find_all('h3')
  93.                         storyverses=[]
  94.                         storytitles=[]  
  95.  
  96.                         for h3 in h3s:
  97.                         next_element = h3.find_next()
  98.                         print next_element.text
  99.  
  100.                         if next_element.find('sup') is None:
  101.                         print("Element is null")
  102.                         required_element=next_element.find_next()
  103.                         if required_element is None:
  104.                             required_element=next_element.next_element.find_next()
  105.                         if required_element.find('sup') is None:
  106.                             break
  107.                         required_element= required_element.find_next('sup')
  108.  
  109.                         superscript_number = str(required_element.find_next('sup').text)                    
  110.                      #   print bcode,fname,superscript_number,h3.text                          
  111.                         print "========",superscript_number
  112.                         if len(superscript_number)>2:
  113.                             storyverses.append(int(superscript_number[0:1]))
  114.                             sn=superscript_number[0:1]  
  115.                             print sn
  116.                             st=int(bcode),int(fname),int(superscript_number[0:1]), str(h3.text)
  117.                         else:
  118.                             storyverses.append(int(superscript_number))
  119.                             st=int(bcode),int(fname),int(superscript_number), (h3.text).encode('utf-8')
  120.  
  121.                         storytitles.append(h3.text)
  122.                         print st    
  123.                         rows.append(st)
  124.                         rno=rno+1  
  125.                         else:
  126.  
  127.                         superscript_number = str(next_element.find('sup').text)                
  128.                         if len(superscript_number)>2:
  129.                             storyverses.append(int(superscript_number[0:1]))
  130.                             sn=superscript_number[0:1]  
  131.                             print sn
  132.                             st=int(bcode),int(fname),int(superscript_number[0:1]), str(h3.text)
  133.                         else:
  134.                             storyverses.append(int(superscript_number))
  135.                             st=int(bcode),int(fname),int(superscript_number), str(h3.text)
  136.  
  137.                         storytitles.append(h3.text)
  138.                         print st    
  139.                         rows.append(st)
  140.                         rno=rno+1
  141.                         #print storytitles[0]  
  142.                     # Write story lines into file
  143.                 #   f1 = codecs.open(csvfile1, encoding='utf-8',mode='w')   # Creating story lines file
  144.                     for row in rows:              
  145.                         f1.write(str(row))
  146.                         f1.write("n")
  147.  
  148.                 #   csvfile2=wpath.replace('.html','verse.csv') # story line files
  149.                 #       csvfile3=wpath.replace('.html','veses.csv')    
  150. #                       f2=open(csvfile2,"w")
  151.                     verses=[]  
  152.                     verseno=1  
  153.                  #      f2 = codecs.open(csvfile2, encoding='utf-8',mode='w')
  154.                  #      f3=codecs.open(csvfile3,  encoding='utf-8',mode='w')    
  155.                     #f2=codecs.open(csvfile2,mode='w')
  156.                     #f3=codecs.open(csvfile3,mode='w')
  157.                         print "======================================================================================"  
  158.                         k=0
  159.                         for y in soup.findAll('span',class_=[pattern,"heading"]):
  160.                         sups=y('sup')
  161.                         for z in sups:
  162.                             z.decompose()
  163.                         if verseno in storyverses:
  164.                             st1=str(rows[storyverses.index(verseno)])
  165.                             k=k+1
  166.                             f2.write(st1)
  167.                             f2.write("n")
  168.                             verses.append(st1)
  169.                             print bcode,fname, verseno,'"'+y.text+'"'
  170.                             st=int(bcode),int(fname), verseno,y.text
  171.                             f2.write(str(st))
  172.                             f2.write("n")
  173.                             f3.write(str(st))
  174.                             f3.write("n")
  175.                             verses.append(st)
  176.         #       print st
  177.                         else:
  178.                             print bcode,fname, verseno,'"'+y.text+'"'  
  179.                             st=int(bcode),int(fname),verseno,y.text
  180.                             f2.write(str(st))
  181.                             f2.write("n")
  182.                             f3.write(str(st))
  183.                             f3.write("n")
  184.                             verses.append(st)
  185.                         verseno+=1
  186.                 #   f1.close()
  187.                 #   f2.close()
  188.                 #   f3.close()
  189.     def writeVerses(self):  
  190.         print("writeVerses")
  191.         # Writes verses into verse file
  192.  
  193.     def writebothVerse(self):
  194.         print("writeStoryFile")
  195.         # Writes verse with story in between
  196.  
  197. # Main program
  198. bookspath="BookCode/books.csv"
  199. path='example'   # Change this to the actual path of the input data
  200.  
  201. o1=BIBLE_CLASS(path)
  202. # Step 1: Read the book list from the file
  203. o1.readBookList(bookspath)
  204.  
  205. # Step 2: Create story files
  206. o1.writeStoryFile(path)
  207. filext1=['.html']
  208. dirs=os.listdir(path)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top