Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import scrapy
- import pandas as pd
- class MySpider(scrapy.Spider):
- name = 'myspider'
- start_urls = ['https://solarkeymark.eu/database/']
- def parse(self, response):
- for link in response.css('a[href^="/database/manufacturer/"]::attr(href)').getall():
- yield response.follow(link, callback=self.parse_manufacturer)
- def parse_manufacturer(self, response):
- name = response.css('h1::text').get().strip()
- for product in response.css('div.row.table-wrapper table tbody tr'):
- brand = product.css('td:nth-child(1)::text').get()
- license_number = product.css('td:nth-child(2)::text').get()
- test_results_link = product.css('td:nth-child(3) a::attr(href)').get()
- if 'thermal' in test_results_link:
- yield response.follow(test_results_link,
- callback=self.parse_test_results,
- meta={
- 'name': name,
- 'brand': brand,
- 'license_number': license_number
- })
- def parse_test_results(self, response):
- name = response.meta['name']
- brand = response.meta['brand']
- license_number = response.meta['license_number']
- values = response.css('.list-group-item span.float-right::text').getall()
- eta_0_b = values[0]
- a1 = values[1]
- a2 = values[2]
- a3 = values[3]
- data = {
- 'Name': [name],
- 'Brand': [brand],
- 'License Number': [license_number],
- 'Eta_0_b': [eta_0_b],
- 'a1': [a1],
- 'a2': [a2],
- 'a3': [a3]
- }
- df = pd.DataFrame(data)
- df.to_excel('test_results.xlsx', index=False)
Advertisement
Add Comment
Please, Sign In to add comment