frontpage.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #!/usr/bin/python3
  2. from bs4 import BeautifulSoup
  3. import requests
  4. class FrontPage():
  5. def getPage(self,url):
  6. r = requests.get(url)
  7. return r.content
  8. def getDomain(self,url):
  9. parts = url.split('//', 1)
  10. return parts[0]+'//'+parts[1].split('/', 1)[0]
  11. def fixHref(self,url,baseurl):
  12. if url.startswith("http"):
  13. return url.strip()
  14. if url.startswith("/"): #'abs'
  15. domain=self.getDomain(baseurl)
  16. if domain.endswith("/") and url.startswith("/"):
  17. url=url[1:]
  18. url=domain+url
  19. else: #relative
  20. arr=baseurl.split("/")
  21. arr.pop()
  22. arr.append(url)
  23. url="/".join(arr)
  24. return url.strip()
  25. def __init__(self,url,selector):
  26. soup = BeautifulSoup(self.getPage(url), 'html.parser')
  27. links=soup.select(selector)
  28. self.links=[]
  29. for l in links:
  30. if not l.has_attr("href"):
  31. print("PANIC")
  32. print(l)
  33. print(url)
  34. continue
  35. #self.links.append({ "href": self.fixHref(l["href"],url),"title":l.get_text() })
  36. #self.links.append({ "href": self.fixHref(l["href"],url)})
  37. self.links.append(self.fixHref(l["href"],url))