ÎncepețiÎncepe gratuit

Descrieri DataCamp

La fel ca în exercițiul anterior, codul de aici este lung deoarece lucrezi cu un spider complet de web crawling! Dar din nou, nu te lăsa intimidat de cantitatea de cod – acum știi cum funcționează spiderii și ești perfect capabil să rezolvi sarcina simplă de față!

Ca și în exercițiul anterior, am creat o funcție previewCourses care îți permite să previzualizezi rezultatul spiderului, dar poți oricând să explorezi și dicționarul dc_dict după ce rulezi codul.

În acest exercițiu, ești rugat să creezi un șir CSS Locator care să indice direct textul descrierii cursului. Tot ce trebuie să știi este că, din pagina cursului, textul descrierii se află într-un element paragraf p care aparține clasei course__description (două liniuțe de subliniere).

Acest exercițiu face parte din cursul

Web Scraping în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează spațiul liber de mai jos din metoda parse_pages cu un șir CSS Locator care indică textul din elementul paragraf p aparținând clasei course__description.

NOTĂ: Dacă apeși Rulează codul, trebuie să folosești Resetează la codul exemplu pentru a putea folosi din nou Rulează codul cu succes!!

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Import scrapy
import scrapy

# Import the CrawlerProcess: for running the spider
from scrapy.crawler import CrawlerProcess

# Create the Spider class
class DC_Description_Spider(scrapy.Spider):
  name = "dc_chapter_spider"
  # start_requests method
  def start_requests(self):
    yield scrapy.Request(url = url_short,
                         callback = self.parse_front)
  # First parsing method
  def parse_front(self, response):
    course_blocks = response.css('div.course-block')
    course_links = course_blocks.xpath('./a/@href')
    links_to_follow = course_links.extract()
    for url in links_to_follow:
      yield response.follow(url = url,
                            callback = self.parse_pages)
  # Second parsing method
  def parse_pages(self, response):
    # Create a SelectorList of the course titles text
    crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
    # Extract the text and strip it clean
    crs_title_ext = crs_title.extract_first().strip()
    # Create a SelectorList of course descriptions text
    crs_descr = response.css( ____ )
    # Extract the text and strip it clean
    crs_descr_ext = crs_descr.extract_first().strip()
    # Fill in the dictionary
    dc_dict[crs_title_ext] = crs_descr_ext

# Initialize the dictionary **outside** of the Spider class
dc_dict = dict()

# Run the Spider
process = CrawlerProcess()
process.crawl(DC_Description_Spider)
process.start()

# Print a preview of courses
previewCourses(dc_dict)
Editează și rulează codul