Advertisement
Guest User

Untitled

a guest
Oct 8th, 2021
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. import re
  2. import requests
  3. from bs4 import BeautifulSoup
  4. from urllib.parse import urljoin
  5.  
  6. base = 'https://compranet.hacienda.gob.mx'
  7. link = 'https://compranet.hacienda.gob.mx/web/login.html'
  8. vigen_detail_page = 'https://compranet.hacienda.gob.mx/esop/toolkit/opportunity/current/{}/detail.si'
  9.  
  10. def grab_first_link_from_dropdown(s,link):
  11. r = s.get(link)
  12. soup = BeautifulSoup(r.text,"html.parser")
  13. category_link = urljoin(base,soup.select_one('ul.dropdown-menu > li > a:contains("Vigentes")').get("href"))
  14. return category_link
  15.  
  16. def fetch_detail_page_link(s,cat_link):
  17. res = s.get(cat_link)
  18. soup = BeautifulSoup(res.text,"html.parser")
  19. for items in soup.select("table.list-table > tbody.list-tbody > tr"):
  20. target_link = items.select_one("a.detailLink").get("onclick")
  21. detail_num = re.findall(r"goToDetail\(\'(\d+?)\'",target_link)[0]
  22. inner_link = vigen_detail_page.format(detail_num)
  23. yield inner_link
  24.  
  25.  
  26. def get_content(s,inner_link):
  27. res = s.get(inner_link)
  28. soup = BeautifulSoup(res.text,"html.parser")
  29. try:
  30. expediente = soup.select_one(".form_question:contains('Código del Expediente') + .form_answer").get_text(strip=True)
  31. except AttributeError: expediente = ""
  32. try:
  33. descripcion = soup.select_one(".form_question:contains('Descripción del Expediente') + .form_answer").get_text(strip=True)
  34. except AttributeError: descripcion = ""
  35. return expediente,descripcion
  36.  
  37.  
  38. if __name__ == '__main__':
  39. with requests.Session() as s:
  40. s.headers['User-Agent'] = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36'
  41. category_link = grab_first_link_from_dropdown(s,link)
  42. for detail_page_link in fetch_detail_page_link(s,category_link):
  43. print(get_content(s,detail_page_link))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement