Je raclage un site Web à l'aide de Scrapy nécessitant une cuisson et un script Java à être activé. Je ne pense pas que je devrai réellement traiter JavaScript. Tout ce dont j'ai besoin, c'est de prétendre que JavaScript soit activé.
Voici ce que j'ai essayé:
1) Activez les cookies en suivant les paramètres P> 2) en utilisant le middleware de téléchargement pour les cookies p> 3) Envoyer 'x x -JavaScript-activé ':' vrai ' p> mais aucun d'entre eux ne fonctionne avec moi. Pouvez-vous s'il vous plaît suggérer une idée ou me donner une certaine direction? P> Merci d'avance pour vos réponses. P> P>
3 Réponses :
Scrapy ne prend pas en charge Java Script. P>
mais p>
Vous pouvez utiliser une autre bibliothèque avec SCRAPY pour exécuter JS, comme webkit, sélénium, etc., P>
Et vous n'avez pas besoin d'activer les cookies ( cookies_enabled = true code>), même pas nécessaire pour ajouter
downloader_middlewares code> dans votre
paramètres.py code> Parce qu'ils sont déjà disponibles dans Paramètres de skérapie par défaut p>
Akhter, merci pour la réponse. Comme je l'ai dit, je n'aurai besoin de traiter JavaScript. Le serveur ne me donnera pas une page réelle si la graine de graines JavaScript n'est pas activée sur la source demandeur. J'ai juste besoin d'envoyer un signal au serveur que JavaScript et les cookies sont activés.
afaik, il n'y a pas de solution universelle. Vous devez déboguer sur le site, pour voir comment il détermine que JavaScript n'est pas pris en charge / activé par votre client. P>
Je ne pense pas que le serveur regarde Voir aussi cette réponse . P> x-javascript-activé code> en-tête. Peut-être qu'il y a un cookie défini par JavaScript lorsque la page se charge dans un vrai navigateur compatible JavaScript? Peut-être que le serveur regarde
utilisateur utilisateur code> en-tête? P>
Vous devriez essayer Splash JS Moteur avec Scrapyjs . Voici un exemple de comment le configurer dans votre projet d'araignée: HUB de raclage Quelle est la même société derrière Scrapy, a Instances spéciales pour exécuter vos araignées avec Splash activé. RENDUMENT SPLASHREQUEST CODE> au lieu de
Demande CODE> dans votre araignée comme ceci: p>
import scrapy
from scrapy_splash import SplashRequest
class MySpider(scrapy.Spider):
start_urls = ["http://example.com", "http://example.com/foo"]
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, self.parse,
endpoint='render.html',
args={'wait': 0.5},
)
def parse(self, response):
# response.body is a result of render.html call; it
# contains HTML processed by a browser.
# â¦