frontpage.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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))