Intégrez Selenium à Scrapy pour le scraping dynamique de pages
Lorsque vous tentez de récupérer des données de pages Web dynamiques à l'aide de Scrapy, le processus d'exploration standard peut échouer . C'est souvent le cas lorsque la pagination repose sur un chargement asynchrone, comme par exemple un clic sur un bouton « suivant » qui ne modifie pas l'URL. Pour surmonter ce défi, incorporer du sélénium dans votre araignée Scrapy peut être une solution efficace.
Placer du sélénium dans votre araignée
Le placement optimal du sélénium dans votre araignée Scrapy dépend sur les exigences spécifiques du grattage. Cependant, plusieurs approches courantes incluent :
Exemple d'utilisation de Selenium avec Scrapy
Par exemple, supposons que vous souhaitiez récupérer les résultats paginés sur eBay . L'extrait suivant montre comment intégrer Selenium à Scrapy :
import scrapy from selenium import webdriver class ProductSpider(scrapy.Spider): name = "product_spider" allowed_domains = ['ebay.com'] start_urls = ['https://www.ebay.com/sch/i.html?_odkw=books&_osacat=0&_trksid=p2045573.m570.l1313.TR0.TRC0.Xpython&_nkw=python&_sacat=0&_from=R40'] def __init__(self): self.driver = webdriver.Firefox() def parse(self, response): self.driver.get(response.url) while True: next = self.driver.find_element_by_xpath('//td[@class="pagn-next"]/a') try: next.click() # Get and process the data here except: break self.driver.close()
Alternative : Utilisation du middleware ScrapyJS
Dans certains cas, l'utilisation du middleware ScrapyJS peut suffire à gérer parties dynamiques d'une page Web sans nécessiter Selenium. Ce middleware vous permet d'exécuter du JavaScript personnalisé dans le framework Scrapy.
Reportez-vous aux liens fournis pour des exemples supplémentaires et des cas d'utilisation d'intégration de Selenium avec Scrapy.
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!