J'essaie de récupérer des informations sur un produit à partir d'une page Web, en utilisant scrapy. La page Web que je veux extraire ressemble à ceci :
- commence par une page product_list avec 10 produits
- un clic sur le bouton "suivant" charge les 10 produits suivants (l'url ne change pas entre les deux pages)
- J'utilise LinkExtractor pour suivre le lien de chaque produit jusqu'à la page du produit, et obtenir toutes les informations dont j'ai besoin.
J'ai essayé de reproduire l'appel next-button-ajax mais je n'ai pas réussi à le faire fonctionner, alors j'ai essayé le selenium. Je peux exécuter le webdriver de selenium dans un script séparé, mais je ne sais pas comment l'intégrer à scrapy. Où dois-je mettre la partie selenium dans mon spider scrapy ?
Mon araignée est assez standard, comme la suivante :
class ProductSpider(CrawlSpider):
name = "product_spider"
allowed_domains = ['example.com']
start_urls = ['http://example.com/shanghai']
rules = [
Rule(SgmlLinkExtractor(restrict_xpaths='//div[@id="productList"]//dl[@class="t2"]//dt'), callback='parse_product'),
]
def parse_product(self, response):
self.log("parsing product %s" %response.url, level=INFO)
hxs = HtmlXPathSelector(response)
# actual data follows
Toute idée est appréciée. Merci.