Поскольку таблицы меняются, это не так просто, но вот один из способов решения этой проблемы:
Вы можете создать пустой фрейм данных со всеми интересующими вас столбцами, а затем очистить параметры и значения из таблицы, объедините их в словарь и затем добавьте эти словарные записи в ваш фрейм данных. Используя for-l oop -logi c, вы учитываете, что некоторые значения могут отсутствовать в вашей таблице, а порядок в таблицах может отличаться.
Этот код основан на двух приведенных вами URL-примерах:
import scrapy
import pandas as pd
class AmazonData(scrapy.Spider):
name = 'amazon_laptops'
df = pd.DataFrame(columns=['Screen Size', 'Screen Resolution', 'Max Screen Resolution', 'Processor', 'RAM', 'Hard Drive', 'Graphics Coprocessor', 'Chipset Brand', 'Card Description', 'Graphics Card Ram Size', 'Wireless Type', 'Number of USB 2.0 Ports', 'Number of USB 3.0 Ports'])
start_urls = ['https://www.amazon.com/dp/B081945D2S', 'https://www.amazon.com/dp/B081721LTM']
def parse(self, response):
product = response.url.split("/")[-1]
summary_table = response.xpath("//table[@id='productDetails_techSpec_section_1']//tr")
keys = [x.strip() for x in summary_table.xpath(".//th/text()").getall()]
values = [x.strip() for x in summary_table.xpath(".//td/text()").getall()]
table_dict = dict(zip(keys, values))
for key, val in table_dict.items():
if key in list(self.df):
self.df.loc[product, key] = val
print(self.df)