簡體   English   中英

為什么xpath的extract()返回一個錨元素的href屬性的空列表?

[英]Why is xpath's extract() returning an empty list for the href attribute of an anchor element?

為什么我在嘗試提取位於以下網址的錨標記的href屬性時會得到一個空列表: https ://www.udemy.com/courses/search/?src = ukw q =使用scrapy進行計數?

這是我提取位於list-view-course-card--course-card-wrapper--TJ6ET類中的<a></a>元素的代碼:

response.xpath("//div[@class='list-view-course-card--course-card-wrapper--TJ6ET']/a/@href").extract()

該站點進行API調用以檢索所有數據。 您可以使用scrapy shell查看該站點返回的響應。 scrapy shell 'https://www.udemy.com/courses/search/?src=ukw&q=accounting'然后view(response)

您正在尋找的數據可通過以下api電話獲得:' https ://www.udemy.com/api-2.0/search-courses/?fields[locale] = simple_english_title & src = ukw & q =accounting '。 但是,如果您嘗試直接訪問此鏈接,您將獲得一個json對象,表示您無權執行此操作。 我是如何找到這個鏈接的? 在瀏覽器中加載URL,然后轉到開發人員工具上的網絡選項卡並查找XHR對象。

以下蜘蛛將首先向主鏈接發出請求,然后向api調用發出請求。 您必須解析返回的json對象以獲取數據。 如果您想為更多產品擴展此蜘蛛,您可能希望在api調用的結構中查找模式。

import scrapy

class UdemySpider(scrapy.Spider):

    name = 'udemy'
    newurl = 'https://www.udemy.com/api-2.0/search-courses/?fields[locale]=simple_english_title&src=ukw&q=accounting'

    def start_requests(self):
        urls = ['https://www.udemy.com/courses/search/?src=ukw&q=accounting'

        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.api_call)

    def api_call(self, response):
        print("Working on second page")
        yield scrapy.Request(url=self.newurl, callback=self.parse)

    def parse(self, response):
        #code to parse json object
`

暫無
暫無

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

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