def build_search(self): """Build the headers and params for the search request for the search engine.""" self.search_params = {} # Don't set the offset parameter explicitly if the default search (no offset) is correct. start_search_position = None if self.current_page == 1 else str( int(self.num_results_per_page) * int(self.current_page)) if self.search_engine == 'google': self.parser = GoogleParser() self.search_params['q'] = self.current_keyword self.search_params['num'] = str(self.num_results_per_page) self.search_params['start'] = start_search_position if self.search_type == 'image': self.search_params.update({ 'oq': self.current_keyword, 'site': 'imghp', 'tbm': 'isch', 'source': 'hp', #'sa': 'X', 'biw': 1920, 'bih': 881 }) elif self.search_type == 'video': self.search_params.update({ 'tbm': 'vid', 'source': 'lnms', 'sa': 'X', 'biw': 1920, 'bih': 881 }) elif self.search_type == 'news': self.search_params.update({ 'tbm': 'nws', 'source': 'lnms', 'sa': 'X' }) elif self.search_engine == 'yandex': self.parser = YandexParser() self.search_params['text'] = self.current_keyword self.search_params['p'] = start_search_position if self.search_type == 'image': self.base_search_url = 'http://yandex.ru/images/search?' elif self.search_engine == 'bing': self.parser = BingParser() self.search_params['q'] = self.current_keyword self.search_params['first'] = start_search_position elif self.search_engine == 'yahoo': self.parser = YahooParser() self.search_params['p'] = self.current_keyword self.search_params['b'] = start_search_position self.search_params['ei'] = 'UTF-8' elif self.search_engine == 'baidu': self.parser = BaiduParser() self.search_params['wd'] = self.current_keyword self.search_params['pn'] = start_search_position self.search_params['ie'] = 'utf-8' elif self.search_engine == 'duckduckgo': self.parser = DuckduckgoParser() self.search_params['q'] = self.current_keyword