利用selenium+scrapy框架爬虫时,selenium在中间件的检索等自动化操作时遇到了已预知可承受的异常,如搜索不出结果的TimeoutException异常,怎样返回spiders的start_rqeuests继续下一次请求,且检索的内容是由列表构成的,循环遍历检索,出现异常后则跳过列表中该元素检索下一元素。
def start_requests(self):
# company_sum_list = get_all_company("昆山市")
# company_before_list = get_company_before()
# company_list = [company for company in company_sum_list if company not in company_before_list]
company_list = ['公司1', '公司2']
for company in company_list:
for url in self.start_urls:
# 第一次请求(使用Selenium中间件)
yield scrapy.Request(url, callback=self.parse, meta={'use_selenium': True, 'company_name': company})
def process_request(self, request, spider):
if request.meta.get('use_selenium'):
url = request.url
company = request.meta.get('company_name')
try:
spider.driver.get(url)
time.sleep(2)
# 模拟搜索操作
# 等待搜索结果加载
WebDriverWait(spider.driver, 5).until(
EC.presence_of_element_located(By.XPATH, "//table[@class='result-table-list']"))
html = spider.driver.page_source
# spider.driver.close()
# 提交搜索结果
return HtmlResponse(url, body=html, encoding='utf-8', request=request)
except TimeoutException:
print(company")
# 这里怎么返回?