Контекст: я пытаюсь почистить новостной сайт для проекта по науке о данных. Я хочу очистить все статьи, представленные в определенной категории этого новостного сайта.
Мой подход. Чтобы попытаться это сделать, я попытался создать сканер, который следит за ссылками и очищает внутреннее содержимое этих ссылок.
Проблема: проблема, с которой я столкнулся, заключалась в том, что я не мог заставить свой сканер перебирать ссылки и очищать их, вместо этого он просто вернулся с содержимым только первой.
Мой код: ниже в коде метод parse
пытается получить все ссылки на отдельные статьи, представленные на этой странице, и перенаправляет их в метод parse_contents
, который пытается очистить внутреннее содержимое этих статей.
Пожалуйста, предложите мне метод достижения результата или укажите на ошибки в моем подходе.
import scrapy
from ..items import ETtestItem
class ETtestSpider(scrapy.Spider):
name = 'etTest'
start_urls = [
'https://economictimes.indiatimes.com/industry/auto/auto-news/articlelist/64829342.cms'
]
def parse(self, response):
# This worked to extract single top article
article = s.response.css('div.eachStory a::attr(href)').get()
if article is not None:
for a in article:
yield response.follow(article, callback=self.parse_contents)
def parse_contents (self, response):
full_article = response.css('div.relative')
items = ETtestItem()
for t in full_article:
title = t.css('.title::text').extract()
summary = t.css('.title2::text').extract()
text = t.css('.Normal::text').extract()
tags = t.css('.rdMrBulDiv a::text').extract()
items['title'] = title
items['summary'] = summary
items['text'] = text
items['tags'] = tags
yield items