selenium-webdriver:如何使用for循环查找元素

3 投票
1 回答
4452 浏览
提问于 2025-04-18 16:37

我想在一个页面上获取所有的链接,以及开始时间和结束时间,然后把这些信息发送到一个叫(parse_detail)的函数去抓取其他信息。

但是我不知道怎么在selenium中使用for循环。

这是我的代码,

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

请教我怎么在selenium中像在scrapy中那样使用for循环。谢谢!

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

1 个回答

5

与其使用 find_element_by_css_selector() 这个方法,它只会返回一个元素,不如使用 find_elements_by_css_selector() 这个方法,它会返回一个元素的列表。

撰写回答