Python 刮痧;Selenium:如何在循环中调用方法
我已经在这里发现了类似的问题,但我的爬虫程序仍然没有运行 我正试图抓取几个我从txt.NET文件中提取的URL。 这工作正常。但是,scrapy/selenium会逐个打开每个URL的浏览器,但不会运行“爬行提示”功能。仅针对my txt.file中的最后一个URL,执行defPython 刮痧;Selenium:如何在循环中调用方法,python,selenium,scrapy,web-crawler,Python,Selenium,Scrapy,Web Crawler,我已经在这里发现了类似的问题,但我的爬虫程序仍然没有运行 我正试图抓取几个我从txt.NET文件中提取的URL。 这工作正常。但是,scrapy/selenium会逐个打开每个URL的浏览器,但不会运行“爬行提示”功能。仅针对my txt.file中的最后一个URL,执行defcrawltips(self,response):中的代码 如何为txt.file中的每个URL调用“crawltips”函数 class AlltipsSpider(Spider): name = 'allcla
crawltips(self,response):
中的代码
如何为txt.file中的每个URL调用“crawltips”函数
class AlltipsSpider(Spider):
name = 'allclasses'
allowed_domains = ['dummy.com']
def start_requests(self):
self.driver = webdriver.Chrome('C:\webdrivers\chromedriver.exe')
with open("urls.txt", "rt") as f:
start_urls = [l.strip() for l in f.readlines()]
for url in start_urls:
self.driver.get(url)
self.driver.find_element_by_id('currentTab').click()
self.driver.find_element_by_xpath('//*[@id="_blog-menu"]/div[2]/div/div[2]/a[3]').click()
yield Request(self.driver.current_url, callback=self.crawltips)
def crawltips(self, response):
sel = Selector(text=self.driver.page_source)
allposts = sel.xpath('//*[@class="block media _feedPick feed-pick"]')
for post in allposts:
username = post.xpath('.//div[@class="col-sm-7 col-lg-6 no-padding"]/a/@title').extract()
publish_date = post.xpath('.//*[@class="bet-age text-muted"]/text()').extract()
yield{'Username': username,
'Publish date': publish_date
}
据我所知,WebDriver一次只能关注一个选项卡(窗口)。运行循环时,选择最后一个URL并在那里执行函数 对于解决方案,您必须根据URL计数找到选项卡的数量,并在完成下一个URL后切换回每个URL 例如:
-移动到新选项卡并积极处理它。(使用浏览器。通过标记名称(“正文”)查找元素。发送键(keys.CONTROL+keys.TAB)
用于backword选项卡)键。SHIFT
-使用制表符计数(i)driver.switch\u to.window(driver.window\u句柄[i])
SeleniumRequest
s