चलाने का समय
पिछले लेसन में, हमने पूरा वेब-क्रॉलर बनाया था जो DataCamp कोर्स डायरेक्टरी में हर कोर्स से कोर्स जानकारी एक्सेस करता है. लेकिन क्लाइमेक्स से पहले ही लेसन थम-सा गया, क्योंकि पार्सिंग मेथड्स पूरी करने के बाद हमने कोड चलाकर देखा ही नहीं.
इस अभ्यास का उद्देश्य वही कमी पूरी करना है!
इस और अगले अभ्यास में जो कोड आप देखेंगे, वह लंबा है, क्योंकि यह वही पूरा स्पाइडर है जिसे बनाने में हमने पूरा लेसन लगाया था! फिर भी घबराइए नहीं! इन दो अभ्यासों का मकसद आपको एक बहुत आसान टास्क देना है, ताकि आप इस स्पाइडर का कोड देखें और चलाएँ. इस तरह, भले ही कोड लंबा हो, आप इसकी पकड़ बना लेंगे!
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Web Scraping
अभ्यास निर्देश
parse_pagesमेथड के अंत में खाली जगह भरें, ताकि अध्याय शीर्षकों को उस डिक्शनरी में असाइन किया जाए जिसकी key संबंधित कोर्स शीर्षक है.
NOTE: अगर आप "कोड चलाएँ" दबाते हैं, तो दोबारा सफलतापूर्वक चलाने के लिए आपको "नमूना कोड पर रीसेट करें" ज़रूर करना होगा!!
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
# Import scrapy
import scrapy
# Import the CrawlerProcess: for running the spider
from scrapy.crawler import CrawlerProcess
# Create the Spider class
class DC_Chapter_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):
crs_title = response.xpath('//h1[contains(@class,"title")]/text()')
crs_title_ext = crs_title.extract_first().strip()
ch_titles = response.css('h4.chapter__title::text')
ch_titles_ext = [t.strip() for t in ch_titles.extract()]
dc_dict[ crs_title_ext ] = ____
# Initialize the dictionary **outside** of the Spider class
dc_dict = dict()
# Run the Spider
process = CrawlerProcess()
process.crawl(DC_Chapter_Spider)
process.start()
# Print a preview of courses
previewCourses(dc_dict)