始める無料で始める

クロールの時間

この演習では、サイト間をクロールするスパイダーを初めて扱います(まず 1 つのサイトからリンクを集め、そのリンクをたどって新しいサイトをパースします)。このスパイダーは短縮版の DataCamp コース一覧から開始し、parse メソッドでコースのリンクを抽出します。そこからそのリンクをたどって各コースページの説明文を parse_descr メソッドで抽出し、リスト course_descrs に入れます。狙いどおりにスパイダーが動くよう、コードを完成させてください!

正しくスクレイピングできていれば、取得したコース説明のうち 1 件を表示する関数 inspect_spider を用意しています!

この演習はコースの一部です

Pythonで学ぶWebスクレイピング

コースを見る

演習の手順

  • 下の 2 つの空欄(各パース用メソッドに 1 つずつ)を、適切な引数で埋めて、スパイダーが最初のパースメソッドから 2 つ目へ正しく移動できるようにしてください。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import the scrapy library
import scrapy

# Create the Spider class
class DCdescr( scrapy.Spider ):
  name = 'dcdescr'
  # start_requests method
  def start_requests( self ):
    yield scrapy.Request( url = url_short, callback = self.parse )
  
  # First parse method
  def parse( self, response ):
    links = response.css( 'div.course-block > a::attr(href)' ).extract()
    # Follow each of the extracted links
    for link in links:
      yield ____
      
  # Second parsing method
  def parse_descr( ____ ):
    # Extract course description
    course_descr = response.css( 'p.course__description::text' ).extract_first()
    # For now, just yield the course description
    yield course_descr


# Inspect the spider
inspect_spider( DCdescr )
コードを編集して実行