第一个Python Scrapy网页搜罗器不工作

qvk1mo1f  于 2022-11-09  发布在  Python
关注(0)|答案(1)|浏览(203)

我参加了Data Camp的Python网页抓取课程,并尝试在我自己的环境中运行“capstone”网页抓取器(该课程在一个特殊的浏览器环境中进行)。代码旨在从Data Camp网页上抓取课程的标题和描述。
我已经花了很多时间在这里和那里修修补补,在这一点上,我希望社区可以帮助我。
我尝试运行的代码是:


# Import scrapy

import scrapy

# Import the CrawlerProcess

from scrapy.crawler import CrawlerProcess

# Create the Spider class

class YourSpider(scrapy.Spider):
    name = 'yourspider'

    # start_requests method
    def start_requests(self):
        yield scrapy.Request(url= https://www.datacamp.com, callback = self.parse)

    def parse (self, response):
        # Parser, Maybe this is where my issue lies
        crs_titles = response.xpath('//h4[contains(@class,"block__title")]/text()').extract()
        crs_descrs = response.xpath('//p[contains(@class,"block__description")]/text()').extract()
        for crs_title, crs_descr in zip(crs_titles, crs_descrs):
            dc_dict[crs_title] = crs_descr

# Initialize the dictionary**outside**of the Spider class

dc_dict = dict()

# Run the Spider

process = CrawlerProcess()
process.crawl(YourSpider)
process.start()

# Print a preview of courses

previewCourses(dc_dict)

我得到以下输出:
C:/用户/main.pywww.datacamp.com 语法无效
进程已结束,退出代码为1
我注意到第20行中的parse方法在PyCharm窗口中仍然是灰色的。
任何帮助让代码运行将不胜感激!
谢谢你的好意,

  • -狼鹰
6yjfywim

6yjfywim1#

错误消息在以下行中触发:

yield scrapy.Request(url=https://www.datacamp.com, callback = self.parse)

作为url的输入,您应该输入一个字符串,字符串的开头和结尾都写有'"
试试看:

yield scrapy.Request(url='https://www.datacamp.com', callback = self.parse)

如果这是你的完整代码,你还缺少函数previewCourses。检查是否提供给你,或者你自己写一个类似这样的代码:

def previewCourses(dict_to_print):
    for key, value in dict_to_print.items():
        print(key, value)

相关问题