Comment Scrapy peut récupérer du contenu dynamique à partir de sites Web alimentés par AJAX
De nombreux sites Web utilisent la technologie AJAX pour afficher le contenu de manière dynamique sans recharger la page entière. Cela présente un défi pour les scrapers Web comme Scrapy, car les données ne sont pas présentes dans le code source.
Une solution à ce problème consiste à demander à Scrapy de faire une requête AJAX pour récupérer les données souhaitées. Pour ce faire, vous pouvez utiliser la classe FormRequest. Voici un exemple :
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'], ... }
Dans cet exemple, la fonction d'analyse extrait l'URL de la requête AJAX et soumet une FormRequest avec les données de formulaire nécessaires. La fonction parse_ajax analyse ensuite la réponse JSON et extrait les données souhaitées.
Cette technique permet à Scrapy de récupérer le contenu dynamique des sites Web qui utilisent AJAX. En effectuant une requête AJAX, Scrapy peut accéder à des données qui ne sont pas présentes dans le code source, permettant ainsi de scraper même des sites Web complexes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!