Моя цель - извлечь как можно больше статей на новостном сайте, перейдя по ссылкам. Однако, после запуска этого кода, кажется, что он никогда не закончится, если я не остановлю его принудительно. Есть ли хорошая стратегия, чтобы закончить эту рекурсию при переходе по ссылкам на сайте? Я также начинаю с определенной страницы статьи, а не с главной страницы сайта.
Во-вторых, что именно делает Scrapy response.urljoin? Любой пример будет оценен!
class NewsSpider(scrapy.Spider):
name = "spidy"
allowed_domains = ["www.news.com"]
def start_requests(self):
urls = [
'https://www.news.com/news/asia-243',
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
for elem in response.css('a::attr(href)').getall():
if re.search(r'\/news\/[a-zA-Z-]+\d{3}', elem):
new_url = response.urljoin(elem)
yield scrapy.Request(new_url, callback=self.parse)
yield {
'title': response.css('h1::text').get(),
'full_date' : response.xpath('//div/time').get(),
'time_seconds' : response.xpath('//div/seconds').get(),
'content': response.css('div.inner p::text').getall(),
'labels': response.css('#topic-tag a::text').getall()
}