Guest User

wow scraper

a guest
Oct 26th, 2015
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.58 KB | None | 0 0
  1. # WoW profile scraper
  2. # Brian Peters 2015
  3.  
  4. # if the server name contains a space, replace it with - ex: quel thalas = quelthalas
  5. # if the server name contains an apostrophe, remove it and merge the words together ex: mal'ganis = malganis
  6.  
  7. #"Aegwynn","Aerie Peak","Agamaggan","Aggramar","Akama","Alexstrasza","Alleria","Altar of Storms"
  8. #,"Alterac Mountains","Aman'Thul","Andorhal","Anetheron","Antonidas","Anub'arak","Anvilmar"
  9. #,"Arathor","Archimonde","Area","Argent Dawn","Arthas","Arygos","Auchindoun","Azgalor"
  10. #,"Azjol-Nerub","Azralon","Azshara","Azuremyst","Baelgun","Balnazzar","Barthilas","Black Dragonflight"
  11. #,"Blackhand","Blackrock","Blackwater Raiders","Blackwing Lair","Blade's Edge","Bladefist","Bleeding Hollow"
  12. #,"Blood Furnace","Bloodhoof","Bloodscalp","Bonechewer","Borean Tundra","Boulderfist","Bronzebeard"
  13. #,"Burning Blade","Burning Legion","Caelestrasz","Cairne","Cenarion Circle","Cenarius","Cho'gall"
  14. #,"Chromaggus","Coilfang","Crushridge","Daggerspine","Dalaran","Dalvengyr","Dark Iron","Darkspear"
  15. #,"Darrowmere","Dath'Remar","Dawnbringer","Deathwing","Demon Soul","Dentarg","Destromath","Dethecus"
  16. #,"Detheroc","Doomhammer","Draenor","Dragonblight","Dragonmaw","Drak'Tharon","Drak'thul","Draka"
  17. #,"Drakkari","Dreadmaul","Drenden","Dunemaul","Durotan","Duskwood","Earthen Ring","Echo Isles"
  18. #,"Eitrigg","Eldre'Thalas","Elune","Emerald Dream","Eonar","Eredar","Executus","Exodar","Farstriders"
  19. #,"Feathermoon","Fenris","Firetree","Fizzcrank","Frostmane","Frostmourne","Frostwolf","Galakrond"
  20. #,"Gallywix","Garithos","Garona","Garrosh","Ghostlands","Gilneas","Gnomeregan","Goldrinn","Gorefiend"
  21. #,"Gorgonnash","Greymane","Grizzly Hills","Gul'dan","Gundrak","Gurubashi","Hakkar","Haomarush","Hellscream"
  22. #,"Hydraxis","Hyjal","Icecrown","Illidan","Jaedenar","Jubei'Thos","Kael'thas","Kalecgos","Kargath"
  23. #,"Kel'Thuzad","Khadgar","Khaz Modan","Khaz'goroth","Kil'jaeden","Kilrogg","Kirin Tor","Korgath"
  24. #,"Korialstrasz","Kul Tiras","Laughing Skull","Lethon","Lightbringer","Lightning's Blade","Lightninghoof"
  25. #,"Llane","Lothar","Madoran","Maelstrom","Magtheridon","Maiev","Mal'Ganis","Malfurion","Malorne"
  26. #,"Malygos","Mannoroth","Medivh","Misha","Mok'Nathal","Moon Guard","Moonrunner","Mug'thol","Muradin"
  27. #,"Nagrand","Nathrezim","Nazgrel","Nazjatar","Nemesis","Ner'zhul","Nesingwary","Nordrassil","Norgannon"
  28. #,"Onyxia","Perenolde","Proudmoore","Quel'dorei","Quel'Thalas","Ragnaros","Ravencrest","Ravenholdt"
  29. #,"Rexxar","Rivendare","Runetotem","Sargeras","Saurfang","Scarlet Crusade","Scilla","Sen'jin","Sentinels"
  30. #,"Shadow Council","Shadowmoon","Shadowsong","Shandris","Shattered Halls","Shattered Hand","Shu'halo"
  31. #,"Silver Hand","Silvermoon","Sisters of Elune","Skullcrusher","Skywall","Smolderthorn","Spinebreaker"
  32. #,"Spirestone","Staghelm","Steamwheedle Cartel","Stonemaul","Stormrage","Stormreaver","Stormscale"
  33. #,"Suramar","Tanaris","Terenas","Terokkar","Thaurissan","The Forgotten Coast","The Scryers"
  34. #,"The Underbog","The Venture Co","Thorium Brotherhood","Thrall","Thunderhorn","Thunderlord"
  35. #,"Tichondrius","Tol Barad","Tortheldrin","Trollbane","Turalyon","Twisting Nether","Uldaman"
  36. #,"Uldum","Undermine","Ursin","Uther","Vashj","Vek'nilash","Velen","Warsong","Whisperwind"
  37. #,"Wildhammer","Windrunner","Winterhoof","Wyrmrest Accord","Ysera","Ysondre","Zangarmarsh"
  38. #,"Zul'jin","Zuluhed"
  39.                            
  40. from tkinter import *
  41. from tkinter import ttk
  42. from PIL import Image, ImageTk
  43. import urllib
  44. #from urllib.request import urlopen
  45. from bs4 import BeautifulSoup
  46.  
  47. window = Tk()
  48. window.configure(background='black')
  49. serverselect = None #global so we can pull them for scraping the site
  50. namefield = None #global so we can pull them later for scraping the site
  51.  
  52. mastername = None
  53. masterrealm = None
  54.  
  55. def firstscrape(realm, name):
  56.     global mastername
  57.     #rl = "http://us.battle.net/wow/en/character/garrosh/therm%C3%ADte/advanced"
  58.     urlpart1 = "http://us.battle.net/wow/en/character/garrosh/"
  59.    
  60.     urlpart3 = "/advanced"
  61.     urlpart2 = str(mastername)
  62.     urlpartx = urllib.quote(urlpart2)
  63.     #if urlpart2.find("í"):
  64.     #    urlpart2.replace(r"í","%C3%AD")
  65.     #print(urlpart2 + "blahblahblah")
  66.     url = urlpart1 + urlpartx + urlpart3
  67.     print(url)
  68.     try:        
  69.         html = urlopen(url)
  70.     except HTTPError as e:
  71.         return None    
  72.     try:
  73.         bsObj = BeautifulSoup(html.read(), "html5lib")
  74.         code = bsObj.style
  75.         codestr = str(code.get_text())
  76.         urlstripper_bgimage(codestr)
  77.     except AttributeError as e:
  78.         return None
  79.  
  80. def urlstripper_bgimage(code):
  81.     temp1, temp2 = code.split("}",1)
  82.     code = temp2
  83.     placeholder = len(temp2)-1
  84.     temp2 = code[2:placeholder]
  85.     code = temp2
  86.     temp1, temp2 = code.split('"',1)
  87.     code = temp2
  88.     temp1, temp2 = code.split("?alt",1)
  89.     code = temp1
  90.     print(code)
  91.     return code
  92.    
  93. def login():
  94.     print("logged in")
  95.    
  96. def serverassign(*args):
  97.     print("server assign started")
  98.     global mastername
  99.     mastername = namefield.get()
  100.     global masterrealm
  101.     masterrealm = serverselect.get()
  102.     firstscrape(masterrealm, mastername)
  103.     windowsetup()
  104.    
  105. def windowsetup(*args): #*args is passed because it won't work without it. thanks tkinter ...  
  106.     global window
  107.     global serverselect
  108.     global servervar      
  109.     window.geometry("740x550")
  110.  
  111. #server selection
  112. servervar = StringVar()
  113. serverselect = ttk.Combobox(window, textvariable=servervar)
  114. serverselect['values'] = ("Aegwynn","Aerie Peak","Agamaggan","Aggramar","Akama","Alexstrasza","Alleria","Altar of Storms"
  115.                          ,"Alterac Mountains","Aman'Thul","Andorhal","Anetheron","Antonidas","Anub'arak","Anvilmar"
  116.                          ,"Arathor","Archimonde","Area","Argent Dawn","Arthas","Arygos","Auchindoun","Azgalor"
  117.                          ,"Azjol-Nerub","Azralon","Azshara","Azuremyst","Baelgun","Balnazzar","Barthilas","Black Dragonflight"
  118.                          ,"Blackhand","Blackrock","Blackwater Raiders","Blackwing Lair","Blade's Edge","Bladefist","Bleeding Hollow"
  119.                          ,"Blood Furnace","Bloodhoof","Bloodscalp","Bonechewer","Borean Tundra","Boulderfist","Bronzebeard"
  120.                          ,"Burning Blade","Burning Legion","Caelestrasz","Cairne","Cenarion Circle","Cenarius","Cho'gall"
  121.                          ,"Chromaggus","Coilfang","Crushridge","Daggerspine","Dalaran","Dalvengyr","Dark Iron","Darkspear"
  122.                          ,"Darrowmere","Dath'Remar","Dawnbringer","Deathwing","Demon Soul","Dentarg","Destromath","Dethecus"
  123.                          ,"Detheroc","Doomhammer","Draenor","Dragonblight","Dragonmaw","Drak'Tharon","Drak'thul","Draka"
  124.                          ,"Drakkari","Dreadmaul","Drenden","Dunemaul","Durotan","Duskwood","Earthen Ring","Echo Isles"
  125.                          ,"Eitrigg","Eldre'Thalas","Elune","Emerald Dream","Eonar","Eredar","Executus","Exodar","Farstriders"
  126.                          ,"Feathermoon","Fenris","Firetree","Fizzcrank","Frostmane","Frostmourne","Frostwolf","Galakrond"
  127.                          ,"Gallywix","Garithos","Garona","Garrosh","Ghostlands","Gilneas","Gnomeregan","Goldrinn","Gorefiend"
  128.                          ,"Gorgonnash","Greymane","Grizzly Hills","Gul'dan","Gundrak","Gurubashi","Hakkar","Haomarush","Hellscream"
  129.                          ,"Hydraxis","Hyjal","Icecrown","Illidan","Jaedenar","Jubei'Thos","Kael'thas","Kalecgos","Kargath"
  130.                          ,"Kel'Thuzad","Khadgar","Khaz Modan","Khaz'goroth","Kil'jaeden","Kilrogg","Kirin Tor","Korgath"
  131.                          ,"Korialstrasz","Kul Tiras","Laughing Skull","Lethon","Lightbringer","Lightning's Blade","Lightninghoof"
  132.                          ,"Llane","Lothar","Madoran","Maelstrom","Magtheridon","Maiev","Mal'Ganis","Malfurion","Malorne"
  133.                          ,"Malygos","Mannoroth","Medivh","Misha","Mok'Nathal","Moon Guard","Moonrunner","Mug'thol","Muradin"
  134.                          ,"Nagrand","Nathrezim","Nazgrel","Nazjatar","Nemesis","Ner'zhul","Nesingwary","Nordrassil","Norgannon"
  135.                          ,"Onyxia","Perenolde","Proudmoore","Quel'dorei","Quel'Thalas","Ragnaros","Ravencrest","Ravenholdt"
  136.                          ,"Rexxar","Rivendare","Runetotem","Sargeras","Saurfang","Scarlet Crusade","Scilla","Sen'jin","Sentinels"
  137.                          ,"Shadow Council","Shadowmoon","Shadowsong","Shandris","Shattered Halls","Shattered Hand","Shu'halo"
  138.                          ,"Silver Hand","Silvermoon","Sisters of Elune","Skullcrusher","Skywall","Smolderthorn","Spinebreaker"
  139.                          ,"Spirestone","Staghelm","Steamwheedle Cartel","Stonemaul","Stormrage","Stormreaver","Stormscale"
  140.                          ,"Suramar","Tanaris","Terenas","Terokkar","Thaurissan","The Forgotten Coast","The Scryers"
  141.                          ,"The Underbog","The Venture Co","Thorium Brotherhood","Thrall","Thunderhorn","Thunderlord"
  142.                          ,"Tichondrius","Tol Barad","Tortheldrin","Trollbane","Turalyon","Twisting Nether","Uldaman"
  143.                          ,"Uldum","Undermine","Ursin","Uther","Vashj","Vek'nilash","Velen","Warsong","Whisperwind"
  144.                          ,"Wildhammer","Windrunner","Winterhoof","Wyrmrest Accord","Ysera","Ysondre","Zangarmarsh"
  145.                          ,"Zul'jin","Zuluhed")
  146. servervar.set('Pick Your Realm')
  147. serverselect.pack()
  148.  
  149. #Toon name entry
  150. toonname = StringVar()
  151. namefield = Entry(window, textvariable=toonname)
  152. namefield.pack()
  153. namefield.insert(0, "Enter Name")
  154.    
  155. #login button    
  156. logbtn = Button(window, text = "Get Toon")
  157. logbtn.configure(fg='green')
  158. logbtn.pack()
  159. logbtn.bind('<Button-1>', serverassign)
  160.  
  161. #start window loop
  162. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment