Ошибка очистки веб — сайта-Обход 0 страниц (со скоростью 0 страниц в минуту), удаление 0 элементов

#python #scrapy

Вопрос:

Я пытаюсь устранить ошибку из следующего кода:

 import scrapy 
    

  class microeconomics_edX(scrapy.Spider):
        


    name='microeconomics'
    
    allowed_domains = ['https://www.edx.org/course/microeconomics']
    
        start_urls=['https://www.edx.org/course/microeconomics']
        
        
        custom_settings = {'FEED_URI' : 'tmp/shopclues.csv'}
        
        def parse(self,response):
            titles=response.xpath('//*[@id="main-content"]/div/div[1]/div/div[5]/div[1]/h1').get()
            subtitles=reponse.xpath('//*[@id="main-content"]/div/div[1]/div/div[5]/div[1]/div/p').get()
            uni=response.xpath('//*[@id="main-content"]/div/div[2]/div[2]/div/div[1]/div/div/div[1]/div/div[1]/span').get()
            instructor=reponse.xpath('//*[@id="main-content"]/div/div[4]/div/a/div/div').get()
            ataglance=reponse.xpath('//*[@id="main-content"]/div/div[3]/div/div[2]/div/div/div[1]/ul/li[4]/div/p').get()
            
            for item in zip(titles,subtitles,uni,instructor,ataglance):
                scrapped_info={
                    'title': item[0],
                    'subtitles': item[1],
                    'uni': item[2],
                    'instructor': item[3]
                    
                }
                
                yield scrapped_info
 

Комментарии:

1. Пожалуйста, предоставьте обратную трассировку ошибок.

Ответ №1:

  1. Вы написали «ответ» вместо «ответа»
  2. Ваш xpath «инструктор» неверен, и вы поймете, что получаете «Нет», этот контент создается с помощью javascript:
 <script data-rh="true" type="application/ld json">{"@context":"http://schema.org","@type":"Course","@id":"https://www.edx.org/course/microeconomics","name":"Microeconomics","courseCode":"MITx 14.100x","url":"https://www.edx.org/course/microeconomics","about":"Economics amp; Finance","educationalCredentialAwarded":"edX Certificate","isAccessibleForFree":true,"inLanguage":"en-us","timeRequired":"W11","description":"<p>Use economic models to learn how prices and markets benefit society in the face of scarcity, and then apply those models to analyze policy.</p>","provider":[{"@type":"CollegeOrUniversity","name":"Massachusetts Institute of Technology","sameAs":"https://www.edx.org/school/mitx"}],"hasCourseInstance":[{"@type":"CourseInstance","instructor":[{"@type":"Person","name":"Jonathan Gruber"}],"startDate":"2021-09-07T16:00:00Z","endDate":"2021-11-23T17:00:00Z","name":"Microeconomics"}],"image":{"@type":"ImageObject","url":"https://prod-discovery.edx-cdn.org/media/course/image/1b473926-2554-4b9f-86ba-8e4c5debb8eb-eb606b5ea35e.small.jpg"},"courseSku":null}</script> 

Вы можете получить его с помощью регулярных выражений, если хотите.

  1. Так как вы ваш «инструктор» — это «Нет», вы получаете ошибку: TypeError: zip argument #4 must support iteration , когда вы правильно очистите ее (и замените ответ на ответ), она будет работать.

Вот альтернативное решение: поскольку он генерируется с помощью javascript из файла json, вы можете просто получить его оттуда.

Сделайте запрос с помощью scrapy с URL-адресом json: https://www.edx.org/page-data/course/microeconomics/page-data.json (не забудьте добавить заголовки запросов) и просто соскоблите его оттуда.