noam76

extract.py

May 9th, 2023 (edited)
1,025
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.51 KB | None | 0 0
  1. import scrapy
  2. from scrapy import Request
  3. from openpyxl import Workbook
  4.  
  5.  
  6. class SolKeySpider(scrapy.Spider):
  7.     name = "SolKeySpider"
  8.     start_urls = ['https://www.duurzaamloket.nl/SolKey_X014/index.php?SchemeNo=0&Offset=1&SearchText=&PageCnt=448']
  9.  
  10.     def parse(self, response):
  11.         wb = Workbook()
  12.         ws = wb.active
  13.         ws.append(["Manufacturer", "Model", "License No", "Type", "Collector Area", "Efficiency"])
  14.  
  15.         for tr in response.xpath("//table[@id='LicTbl']/tbody/tr"):
  16.             link = tr.xpath(".//td[2]/a/@href").get()
  17.             id = link.split("ID=")[1].split("&")[0]
  18.             manufacturer = tr.xpath(".//td[2]/a/text()").get().strip()
  19.             model = tr.xpath(".//td[3]/text()").get().strip()
  20.             license_no = tr.xpath(".//td[4]/text()").get().strip()
  21.             type = tr.xpath(".//td[5]/text()").get().strip()
  22.             collector_area = tr.xpath(".//td[6]/text()").get().strip()
  23.             efficiency = tr.xpath(".//td[7]/text()").get().strip()
  24.  
  25.             yield Request(
  26.                 url=f"https://www.duurzaamloket.nl/SolKey_X014/Spec_Collector.php?ID={id}&SchemeNo=0&Offset=1&SearchText=&PageCnt=448#",
  27.                 callback=self.parse_details,
  28.                 meta={
  29.                     'wb': wb,
  30.                     'ws': ws,
  31.                     'manufacturer': manufacturer,
  32.                     'model': model,
  33.                     'license_no': license_no,
  34.                     'type': type,
  35.                     'collector_area': collector_area,
  36.                     'efficiency': efficiency
  37.                 }
  38.             )
  39.  
  40.     def parse_details(self, response):
  41.         wb = response.meta['wb']
  42.         ws = response.meta['ws']
  43.         manufacturer = response.meta['manufacturer']
  44.         model = response.meta['model']
  45.         license_no = response.meta['license_no']
  46.         type = response.meta['type']
  47.         collector_area = response.meta['collector_area']
  48.         efficiency = response.meta['efficiency']
  49.  
  50.         for tr in response.xpath("//table[@class='LicDetails']/tbody/tr"):
  51.             key = tr.xpath(".//td[1]/text()").get().strip()
  52.             value = tr.xpath(".//td[2]/text()").get().strip()
  53.  
  54.             if key == "Test report number":
  55.                 test_report_number = value
  56.             elif key == "Test Standard":
  57.                 test_standard = value
  58.  
  59.         ws.append([manufacturer, model, license_no, type, collector_area, efficiency, test_report_number, test_standard])
  60.         wb.save("solkey_results.xlsx")
  61.  
Advertisement
Add Comment
Please, Sign In to add comment