python selenium selenium-webdriver web-scraping scrapy-spider

python - Selenium-webdriver: Cómo usar for loop para find_elements



web-scraping scrapy-spider (1)

En lugar de find_element_by_css_selector() , que devuelve un único elemento, debe usar find_elements_by_css_selector() , que devuelve una lista de elementos.

Quiero obtener todos los enlaces y start_time y end_time uno por página y luego enviarlos a la función (parse_detail) para descartar otra información. Pero no sé cómo usar el selenio en for loop

Aquí está mi código Y hay un error:

for site in sites: exceptions.TypeError: ''WebElement'' object is not iterable

Por favor, enséñame cómo usar el filtro de selenio en forma de lazo. ¡Gracias!

class ProductSpider(Spider): name = "city20140808" start_urls = [''http://wwwtt.tw/11''] def __init__(self): self.driver = webdriver.Firefox() dispatcher.connect(self.spider_closed, signals.spider_closed) def parse(self, response): self.driver.get(response.url) item = CitytalkItem() sites = self.driver.find_element_by_css_selector("div.body ") for site in sites: linkiwant = site.find_element_by_css_selector(".heading a") start = site.find_element_by_css_selector("div.content p.m span.date") end = site.find_element_by_css_selector("div.content p.m span.date") item[''link''] = linkiwant.get_attribute("href") item[''start_date''] = start.text item[''end_date''] = end.text yield Request(url=item[''link''], meta={''items'':items}, callback=self.parse_detail) def parse_detail(self,response): item = response.meta[''items''] ........ yield item