【问题标题】:selenium-webdriver: How to use for loop to find_elementsselenium-webdriver:如何使用 for 循环来查找元素
【发布时间】:2014-10-02 13:16:17
【问题描述】:

我想获取所有链接以及 start_time 和 end_time 一个页面,然后发送到 function(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

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping scrapy-spider


    【解决方案1】:

    您需要使用返回元素列表的find_elements_by_css_selector(),而不是返回单个元素的find_element_by_css_selector()

    【讨论】:

      猜你喜欢
      • 2017-07-03
      • 2014-07-18
      • 2020-05-18
      • 2023-01-22
      • 2017-09-12
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      • 2021-03-31
      相关资源
      最近更新 更多