Scrapy 如何從 AJAX 支援的網站檢索動態內容
許多網站使用 AJAX 技術動態顯示整個頁面。這對像 Scrapy 這樣的網頁抓取工具來說是一個挑戰,因為原始程式碼中不存在資料。
對此的一個解決方案是讓 Scrapy 發出 AJAX 請求來檢索所需的資料。為此,您可以使用 FormRequest 類別。以下是範例:
class MySpider(scrapy.Spider): ... def parse(self, response): # Extract the URL for the AJAX request ajax_url = response.css('script').re('url_list_gb_messages="(.*)"')[0] # Create a FormRequest with the appropriate form data yield FormRequest(ajax_url, callback=self.parse_ajax, formdata={'page': '1', 'uid': ''}) def parse_ajax(self, response): # Parse the JSON response and extract the desired data json_data = json.loads(response.body) for item in json_data['items']: yield { 'author': item['author'], 'date': item['date'], 'message': item['message'], ... }
在此範例中,解析函數會提取 AJAX 請求的 URL 並提交包含必要表單資料的 FormRequest。然後 parse_ajax 函數解析 JSON 響應並提取所需的資料。
此技術可讓 Scrapy 從使用 AJAX 的網站檢索動態內容。透過發出 AJAX 請求,Scrapy 可以存取原始程式碼中不存在的數據,從而可以抓取複雜的網站。
以上是Scrapy 如何從 AJAX 支援的網站檢索動態內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!