簡體   English   中英

無法抓取 Javascript 網站 - API 調用/XHR 請求

[英]Unable to scrape Javascript website - API Calls / XHR request

我無法抓取依賴於 Java 腳本的網站。 我需要從使用獲取 JSON 對象的 XHR 請求發送到服務器的 API 調用中獲取學校列表

我使用與 XHR 請求相同的請求標頭,包括 cookie 值。 不知道為什么它不起作用。 它基本上給出了超時錯誤。 附加來自谷歌瀏覽器請求頭(網絡選項卡)的 Python 代碼和屏幕截圖以及來自 vs 代碼終端的錯誤:

# -*- coding: utf-8 -*-
import scrapy
import json

class SchoolSpider(scrapy.Spider):
    name = 'school'
    # allowed_domains = ['www.directory.ntschools.net']
    # start_urls = ['https://www.directory.ntschools.net/api/System/GetAllSchools/']

    headers = {'Accept': 'application/json',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
    'Connection': 'keep-alive',
    'Cookie': 'BIGipServerdirectory.ntschools.net_443.app~directory.ntschools.net_443_pool=360972810.20480.0000',
    'Host': 'directory.ntschools.net',
    'Referer': 'https://directory.ntschools.net/',
    'Sec-Fetch-Dest': 'empty',
    'Sec-Fetch-Mode': 'cors',
    'Sec-Fetch-Site': 'same-origin',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36',
    'X-Requested-With': 'Fetch'}


    def start_requests(self):
        yield scrapy.Request(url='https://www.directory.ntschools.net/api/System/GetAllSchools/',headers= self.headers,callback=self.parse)

    def parse(self, response):
        print(json.loads(response.body))

XHR 請求

請求頭

來自 VS Code 終端的錯誤代碼

我想我現在知道我做錯了什么。 我使用了錯誤的帶有“www”的 api url,而原始 url 沒有。 我的錯。 感謝那些在這方面投入時間的人。 干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM