Итак, ладья ie здесь, с трудом записывает списанные данные в xlsx. Ну, первая страница отличная, проблема в том, что другие страницы перезаписывают предыдущие. Я полагаю, что это связано с поведением Yield, но, честно говоря, я не могу четко понять, почему.
Так что, как вы можете видеть из приведенного ниже кода, я могу прочитать всю информацию, которую хочу, но когда я отправляю все Информация для Excel, и я начинаю новую страницу, я не могу найти способ не перезаписать эту информацию, кто-то может мне помочь? Ценю!
def parse(self,response):
product_name = response.css('.a-text-ellipsis .a-link-normal').css('::text').extract() #when having 2 tags, use ::text in the end, else, in the tag.
#series_product_to_fill_df = pd.Series(product_name)
date = response.css('.review-date::text').extract()
rating_text = response.css('.review-rating').extract()
rate =[]
for x in rating_text:
extracting_stars = Selector(text=x).xpath('//span/text()').extract_first()
rate.append(extracting_stars)
title = response.css('.a-text-bold span::text').extract()
reviewer_name = response.css('.a-profile-name::text').extract()
badge = response.css('.c7y-badge-text::text').extract()
review = response.css('.review-text-content span::text').extract()
print('******************************************')
df = pd.DataFrame(columns=['Date','Rate','Title','Reviewer_name','Badge', 'Review']) ##When passing the dictionary, using [] implies that all the data from that are rows and not columns, not generating index problems
df['Date'] = pd.Series(date)
df['Rate'] = pd.Series(rate)
df['Title'] = pd.Series(title)
df['Reviewer_name'] = pd.Series(reviewer_name)
df['Badge'] = pd.Series(badge)
df['Review'] = pd.Series(review)
df['Product_name'] = pd.Series(product_name)
#Reordering cols
df = df[['Product_name','Date','Rate','Title','Reviewer_name','Badge', 'Review']]
print(df)
#filling all rows in the "Product_name"
df['Product_name'].fillna( method ='ffill',inplace=True) #uses the only entry in the col and repeats it
#excel_path
destination_path = "C:\\Users\\xxxxxx\\export_dataframe.xlsx"
#excel
df.to_excel(destination_path)
#yield items
yield df.to_excel(destination_path)
#Next page scraping
next_page = response.css('li.a-last > a::attr(href)').extract_first() #extracting all the link
if next_page:
yield scrapy.Request(urljoin(response.url, next_page),callback=self.parse)