Egy e-kereskedelmi oldalon próbálom megtalálni egy termék nevét és árát. Seleniumot használok, és a kódom:
for element in WebDriverWait(self.driver, 30).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '.product-iWrap'))):
product_name_tmall = element.find_element_by_css_selector('.productTitle a')
product_price_tmall = element.find_element_by_css_selector('.productPrice em::text')
tmallSpider.items['product_name_tmall'] = product_name_tmall
tmallSpider.items['product_price_tmall'] = product_price_tmall
yield tmallSpider.items
Amikor futtatom, ez a hibaüzenet jelenik meg
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
Korábban a scrapy-t használtam ugyanazzal a css választóval, és a megfelelő információkat adja:
product_info = response.css('.product-iWrap')
for product in product_info:
product_name_tmall = product.css('.productTitle a').xpath('normalize-space(.)').get()
product_price_tmall = product.css('.productPrice em::text').extract()
tmallSpider.items['product_name_tmall'] = product_name_tmall
tmallSpider.items['product_price_tmall'] = product_price_tmall
product_detail_link = 'http:' + product.css('a::attr(href)')[0].extract()
yield scrapy.Request(product_detail_link, callback=self.start_scraping)
Nem tudom, miért nem működik a css elérési út a Seleniumban. Az oldal HTML-kódja:
<div class="product-iWrap">
<p class="productPrice">
<em title="6599" data=spm-anchor-id="a220m.1000858.100725 ..." class>...</em>
</p>
<p class="productTitle">
<a href="//detail.tmall..." target="blank" title="iPad Air 3"...>...</a>
</p>
</div>
Ehhez a termékhez a 6599-et és az iPad Air 3-at szeretném beszerezni, valamint az összes termék információit az első oldalon. Van ötleted, hogyan kell csinálni? Ez az oldal URL-je: https://list.tmall.com/search_product.htm?q=ipad