Как анализировать встроенные ссылки с помощью паука Python Scrapy

Я пытаюсь использовать python scrappy для извлечения информации о каталоге курсов с веб-сайта. Дело в том, что у каждого курса есть ссылка на его полную страницу, и мне нужно перебирать эти страницы одну за другой, чтобы извлечь их информацию, которая позже загружается в базу данных SQL. Во всяком случае, я не знаю, как последовательно менять URL-адреса в пауке. здесь прикреплен ниже мой код до сих пор.

import scrapy

def find_between(s, first, last):
    try:
        start = s.index(first) + len(first)
        end = s.index(last, start)
        return s[start:end]
    except ValueError:
        return ""

class QuoteSpider(scrapy.Spider):
    name = 'courses'
    start_urls = [
        'http://catalog.aucegypt.edu/content.php?catoid=36&navoid=1738',

    ]

    def parse(self, response):
        # pages in span+ a
        all_courses = response.css('.width a')
        for course in all_courses:
            courseURL = course.xpath('@href').extract()
            cleanCourseURL = find_between(str(courseURL), "['", "']")
            fullURL = "http://catalog.aucegypt.edu/" + cleanCourseURL

            #iterate through urls
            QuoteSpider.start_urls += fullURL
            courseName = response.css('.block_content')


            yield {
                'courseNum': fullURL,
                'test': courseName
            }

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычно вам нужно yield этот новый URL и обработать его соответствующим callback:

def parse(self, response):
    # pages in span+ a
    all_courses = response.css('.width a')
    for course in all_courses:
        courseURL = course.xpath('@href').extract()
        cleanCourseURL = find_between(str(courseURL), "['", "']")
        fullURL = "http://catalog.aucegypt.edu/" + cleanCourseURL
        courseName = response.css('.block_content')
        yield scrapy.Request(
            url=fullURL,
            callback=self.parse_course,
            cb_kwargs = {
                'course_name': courseName,
            },
        )

def parse_course(self, response, course_name):
    # parse you course here...

Другие вопросы по теме