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