Xpath дает разные результаты в браузере и в scrapy - PullRequest
0 голосов
/ 28 мая 2020

Я пытался очистить информацию о курсе python с этого сайта: https://www.udemy.com/topic/python/.

Я написал xpath для выбора текста заголовка:

// div [@ data-target = 'course-card-title'] / text ()

Это работает, когда я тестирую его на chrome, и он дает 39 совпадений, но Я получаю пустой список на scrapy.

1 Ответ

1 голос
/ 28 мая 2020

Как упоминалось в комментарии Tarun Lalwani , данные, которые вы видите в своем браузере, создаются с использованием Javascript. Один из способов - использовать Selenium или Scrapy с spla sh, другой - найти сделанные API-вызовы и использовать их напрямую.

Используйте DevTools вашего браузера (ctrl + shift + c) и проверьте вкладку «Сеть». Посмотрите, что произойдет, когда вы перезагрузите страницу. Вы должны заметить, что к их API поступают запросы, которые вы можете использовать и управлять, чтобы получить данные, которые вы ищете. Из ответа в формате json вы можете извлечь данные, которые ищете.

Ниже приведен минимальный рабочий пример, который печатает названия курсов, которые вы видите в верхней части https://www.udemy.com/topic/python/:

import scrapy
import json


class UdemySpider(scrapy.Spider):
    name = "udemy"
    start_urls = ['https://www.udemy.com/api-2.0/discovery-units/?context=topic&from=0&page_size=10&item_count=12&excluded_course_ids=&label_id=7380&source_page=topic_page&locale=de_DE&currency=eur&navigation_locale=en_US&skip_price=true']

    def parse(self, response):
        jsonresponse = json.loads(response.body_as_unicode())

        for item in jsonresponse['units'][0]['items']:
            print(item['title'])

Результат печати (по крайней мере, для пользователей из Германии) будет выглядеть так:

Python Bootcamp: Vom Anfänger zum Profi, inkl. Data Science
Python für Data Science, Machine Learning & Visualization
Data Science & Maschinelles Lernen in Python - am Beispiel
Machine Learning Komplettkurs mit Python inkl. AI Einführung
Python Bootcamp: Der Einstiegskurs
Python - Das Python Grundlagen Bootcamp - Von 0 auf 100!
Visualisiere Daten mit Python - auch für Anfänger!
Data Science, Apache Spark & Python: Analysiere echte Daten!
Fortgeschrittene Python Programmierung
Complete Python Bootcamp: Go from zero to hero in Python 3
Machine Learning A-Z™: Hands-On Python & R In Data Science
Python for Data Science and Machine Learning Bootcamp
...