Попробуйте следующее, чтобы получить их все последовательно. Оказывается, что класс, ответственный за выбор заголовка, отличается в нескольких контейнерах, как в header-hero__title
, dc-course__header-title
et c. К счастью, есть часть класса, которая является общей для всех из них, title
, поэтому я воспользовался этим. Принося изменения, выручает их всех.
import scrapy
from scrapy.crawler import CrawlerProcess
class DataOfDatacamp(scrapy.Spider):
name = "DataOfDatacamp"
def start_requests(self):
yield scrapy.Request(url="https://www.datacamp.com/courses/all?embedded=true", callback=self.parse)
def parse(self, response):
for link in response.css('a.course-block__link::attr(href)').getall():
yield response.follow(url=link, callback=self.parse2)
def parse2(self, response):
print(response.css("h1[class*='title']::text").get())
if __name__ == "__main__":
process = CrawlerProcess({'LOG_LEVEL':'ERROR'})
process.crawl(DataOfDatacamp)
process.start()